The Bitfountain iOS 8 with Swift Immersive
350+ videos taking you step-by-step through process of building 14 different applications in iOS 8 and XCode 6 using the new Swift programming language.
Watch Promo
"From complete beginner to junior developer in three months"
Our iOS 8 immersive course teaches the tools needed to develop iPhone and iPad applications for iOS 8. Along our journey, we will learn the syntax of Swift, the language used to develop for iOS, as well as important design patterns and best practices for developing mobile applications. By the end of the course, you should be able to understand and recreate many of the features seen on popular iOS applications and extend that knowledge to making apps of your own.
We believe students learn by building. You will learn by buiding 14 apps during the course, with the final app being a full featured dating app with multiple users, direct chat, and complete profiles.
Topics Covered:
- Learn Swift: The language used to develop all native iOS and Mac apps
- iOS 8 and XCode 6: Learn the latest technology platforms from Apple
- API Integration: Learn how to connect with third party APIs like Facebook and more
- Understand NSURLSession for API integration
- Create App Storyboard: Learn how to create beautiful interfaces using Apple's graphical interface builder
- Design responsive interfaces for the multiple iOS device screen sizes
- Core Data: Store data on your device with the core data database
- Git: Learn how to use Git for version control and collaboration
- Learn CloudKit: A revolutionary new tool from Apple that allows iOS developers to create database in the cloud right from the iOS client app
- Intro to the Metal Framework. Harness the full power of the A7 chip in your iPhone 5s
- Learn about developing for Apple's HealthKit
- Implement and work with In-app analytics to better understand application usability and growth
- And so much more
Reviews
"I must say that so far, this course is awesome. Having the challenging assignments, daily discussions and feedback from the instructors, has been the missing piece that I have been looking for. I have read a handful of books, watched hours of video & typed in a bunch of tutorials, and finally, having to work through tough assignments and applying what I have been learning, it is all starting to click - Finally!" - Mark S.
"This course is by far the most elaborate and best taught iOS course I have seen online yet. It's good structured and covers a lot of topics in-depth." - Christoph Zamaitat
“Bitfountain's discussion board is one of the best resources for a beginning iOS developer. So much help being offered" - Omar S.
"Great course for total beginners, but also a lot of tricks and tips for those with experience. Also good seeing how others code and tackle problems. A great learning tool what ever your skill level." - Mazza1111
“I've just completed the iOS course, which I thought was a great intro to the XCode environment... I feel it's been well worth the investment. " - Herdy H.
"I am about a quarter of the way through this course and have no previous programming experience. I have found this course to be well presented and structured with everything explained clearly. This is a difficult topic and you have to work hard understanding the concepts if you are new to it, but it is easy to go back over an area to pick up anything you might have missed first time round. The guys are constantly improving it and adding to it and seem committed to getting it 100% right. Recommend it....but be prepared to work hard!!" - Tony McDonald
“Can't reiterate it enough how this course is helping me with my iOS dev skills. I think using protocols and delegation is finally becoming second nature. Fingers crossed :-)" -Alex P.
“I am really loving the class. I have taken classes at Code School & Treehouse and both were missing a key element. The ability to ask questions as you complete a section and get an answer. “ -Lisa A.
“Your training is the best out there so far. I wish I had the time away from regular job to follow along." -Christian S.
“Im loving this.. I have been through at least 5 books, and many online deals. Yours is super so far. Finally, i can get from start to finish on a lesson without wondering why on "Everything" thank you. Cant wait to do more.. “ -Kevin R.
Why take this course and how much time does it take to complete?
iOS development, and software development as a whole, is a booming career. The demand for new developers at all levels far outweighs the supply. Barrier to entry is not as high as one would think - though passion and hard work are necessary, a degree in computer science or any other technical field is not required.
We aim to take you from complete beginner to junior developer in three months. The apps you create in this course can be used on your portfolio so you have something to show when you apply for jobs.
Your Instructor
Eliot regularly teaches iOS development classes and workshops at General Assembly and guest lectures for companies and development boot camps around NYC. He also taught the inaugural class for Coalition for Queens which focused on increasing diversity in iOS development. He also coaches students in a one-on-one environment with a focus on transitioning to full time development. Eliot cofounded and organizes the iOS Office Hours meetup NYC.
In his free time he works as a contractor for startups focusing on agile development.
Find me on twitter @EliotArntz - I check my direct messages quite frequently.
Course Curriculum
-
StartIntro to Object Oriented Programming (3:27)
-
StartWhat are Structs and Instances? (2:38)
-
StartCreate a New Project and Storyboard Setup (10:05)
-
StartMake Your Own Struct (1:51)
-
StartAdding Properties to the Tiger (4:41)
-
StartInstantiating our First Struct (5:23)
-
StartUsing the Tiger Instance (2:42)
-
StartMultiple Tigers (4:56)
-
StartIntroduction to Arrays (2:20)
-
StartCreate an Array (3:42)
-
StartTwo Cool Properties of Arrays (2:26)
-
StartIndexing into an Array and Iterating Over an Array (4:20)
-
StartRanges and For in Loops (4:17)
-
StartFor in Enumerate Loop (2:52)
-
StartMutating an Array (9:35)
-
StartGenerating a Random Number (4:14)
-
StartAdding Tigers to an Array (6:20)
-
StartShow a Random Tiger (3:13)
-
StartAnimating our Tigers (9:08)
-
StartWhile Loops (3:57)
-
StartRecurring Tiger Bug (6:36)
-
StartOur First Function (3:37)
-
StartOur First Parameter (4:27)
-
StartMultiple Parameters (3:33)
-
StartReturn Values (6:23)
-
StartAnother Return Value and Other Function Calls (4:46)
-
StartLooking at the Current Functions (2:43)
-
StartThe Tiger can Chuff (3:07)
-
StartChuff a Number of Times and Self (13:08)
-
StartSelf Continued (3:22)
-
StartChuff a Number of Times with Control Flow (4:52)
-
StartUpdate Tigers Age Function (4:56)
-
StartAdding a Random Fact Function (7:55)
-
StartSwitch Statement (4:07)
-
StartClasses and Structs (3:03)
-
StartCreating a Lion (6:32)
-
StartCreate a Lion Array (1:35)
-
StartIntroduction to Tuples (3:17)
-
StartSwitch Statement with a Tuple (3:04)
-
StartUpdate Current Animal (5:28)
-
StartDisplaying both Lions and Tigers (7:08)
-
StartLion Roar Function (1:12)
-
StartAccessing Properties in a Function (2:12)
-
StartLion Random Fact Function (3:16)
-
StartSlotMachine: Introduction (3:13)
-
StartSlotMachine: Starting our New App (3:31)
-
StartSlotMachine: Setup ContainerViews (20:27)
-
StartSlotMachine: Finishing Setup ContainerViews (10:14)
-
StartSlotMachine: setupFirstContainer (6:09)
-
StartSlotMachine: setupSecondContainer (11:10)
-
StartSlotMachine: setupThirdContainer (7:12)
-
StartSlotMachine: Some more Labels in the ThirdContainer (5:53)
-
StartSlotMachine: Finish adding Labels to the ThirdContainer (7:09)
-
StartSlotMachine: Start Setup FourthContainer (16:05)
-
StartSlotMachine: Another Button in the fourth Container (7:19)
-
StartSlotMachine: Finishing the fourth Container (7:27)
-
StartSlotMachine: Adding a Slot Struct (1:44)
-
StartSlotMachine: Adding Assets (1:39)
-
StartSlotMachine: Factory Class (13:52)
-
StartSlotMachine: Create Slot (14:39)
-
StartSlotMachine: Implementing Create Slot (1:23)
-
StartSlotMachine: Slots Array (2:04)
-
StartSlotMachine: Showing Slots (3:15)
-
StartSlotMachine: Remove old ImageViews (5:24)
-
StartSlotMachine: hardReset (4:01)
-
StartSlotMachine: updateMainView (1:26)
-
StartSlotMachine: showAlertWithText (4:30)
-
StartSlotMachine: betOneButtonPressed (2:44)
-
StartSlotMachine: betMaxButtonPressed (2:53)
-
StartSlotMachine: Reordering Slots into Rows (7:01)
-
StartSlotMachine: computeWinnings (3:03)
-
StartSlotMachine: Check for Flush (4:58)
-
StartSlotMachine: Check for Three in a Row (4:19)
-
StartSlotMachine: Check for Three of a Kind (2:49)
-
StartSlotMachine: Finishing Touches (3:31)
-
StartLemonade Stand: Storyboard Solution (11:22)
-
StartLemonade Stand: Connection's Solution (7:36)
-
StartLemonade Stand: Supplies Solution (4:21)
-
StartLemonade Stand: Price Solution (1:02)
-
StartLemonade Stand: Instantiating Price and Supplies Solution (3:25)
-
StartLemonade Stand: Instantiating Tracking Values Solution (1:38)
-
StartLemonade Stand: updateMainView Solution (5:11)
-
StartLemonade Stand: showAlertWithText Solution (3:52)
-
StartLemonade Stand: Use updateMainView Solution (1:18)
-
StartLemonade Stand: startDayButtonPressed Solution (10:59)
-
StartLemonade Stand: purchase IceCubes and Lemons Solution (4:36)
-
StartLemonade Stand: unpurchase IceCubes and Lemons Solution (3:47)
-
StartLemonade Stand: Mix Functions Solution (6:31)
-
StartLemonade Stand: Clear Mix and Purchases Solution (1:35)
-
StartLemonade Stand: Weather Properties Solution (1:58)
-
StartLemonade Stand: Indexing into WeatherArray Solution (1:36)
-
StartLemonade Stand: Using the Weather Array Solution (4:03)
-
StartLemonade Stand: Add weatherImageView Solution (1:41)
-
StartLemonade Stand: Adding Image Assets Solution (0:34)
-
StartLemonade Stand: Displaying Weather Solution (1:46)
-
StartTask It: Setup Options (2:05)
-
StartTask It: Add a TableView (3:29)
-
StartTask It: Add a TableViewCell (3:02)
-
StartTask It: UITableViewDataSource and UITableViewDelegate (8:23)
-
StartTask It: TableView Outlet Hookup (1:19)
-
StartTask It: Updating UITableViewDataSource Delegate (2:26)
-
StartTask It: Setting up Prototype Cell (5:15)
-
StartTask It: Updating UITableViewDataSource (7:29)
-
StartTask It: Adding Labels to the TaskCell (5:19)
-
StartTask It: Adding Tasks (11:29)
-
StartTask It: TaskModel (2:18)
-
StartTask It: Implementing the TaskModel (4:20)
-
StartTask It: TaskDetailViewController (7:11)
-
StartTask It: didSelectRowAtIndexPath (2:54)
-
StartTask It: PrepareForSegue (8:04)
-
StartTask It: Updating the DetailTaskViewController (3:09)
-
StartTask It: Date Class (5:48)
-
StartTask It: Updating Dates (1:41)
-
StartTask It: NSDate to String (4:53)
-
StartTask It: Update DatePicker (1:04)
-
StartTaskIt: AddTaskViewController and Storyboard Changes (6:54)
-
StartTask It: Dismiss and Pop ViewControllers (7:57)
-
StartTask It: AddTaskViewController Setup (2:05)
-
StartTask It: Add a Task (4:39)
-
StartTask It: AddTask Segue (3:12)
-
StartTask It: ViewDidAppear (3:09)
-
StartTask It: Passing the ViewController to the TaskDetailViewController (1:19)
-
StartTask It: Pop the TaskDetailViewController (2:00)
-
StartTask It: Update Tasks (3:39)
-
StartTask It: Organize Tasks by Date (8:16)
-
StartTask It: TaskModel Completion (3:08)
-
StartTask It: Creating a BaseArray (2:34)
-
StartTask It: Updates with the Base Array (5:14)
-
StartTask It: Finish Fixing the Errors (3:50)
-
StartTask It: Adding Section Headers (2:01)
-
StartTask It: Completing Tasks (4:41)
-
StartTask It: Uncompleting Tasks (3:16)
-
StartTask It: Getting Ready for CoreData (1:25)
-
StartTask It: Setting up the CoreData Stack (9:36)
-
StartTask It: Setting up the new TaskModel (5:08)
-
StartTask It: Creating and Accessing a TaskModel (12:00)
-
StartTask It: Setting Up the FetchedResultsController (10:25)
-
StartTask It: Updating the UITableView DataSource Functions (6:37)
-
StartTask It: Updating prepareForSegue and Removing MainVC Properties (1:33)
-
StartTask It: Updating doneBarButtonItemPressed Function (2:46)
-
StartTask It: Adding Completion Sort Descriptor (3:49)
-
StartTaskIt: A Little Break
-
StartExchangeAGram: Introduction
-
StartExchangeAGram: Setup (5:15)
-
StartExchangeAGram: Storyboard Updates (4:15)
-
StartExchangeAGram: UICollectionViewDataSource (4:20)
-
StartExchangeAGram: FeedCell (5:26)
-
StartExchangeAGram: CameraController (9:56)
-
StartExchangeAGram: Photo Library (6:27)
-
StartExchangeAGram: didFinishPickingImage (4:06)
-
StartExchangeAGram: Creating a FeedItem (2:14)
-
StartExchangeAGram: Persisting a FeedItem (6:38)
-
StartExchangeAGram: NSFetchRequest (6:05)
-
StartExchangeAGram: Displaying the FeedItem (8:05)
-
StartExchangeAGram: FilterViewController (1:53)
-
StartExchangeAGram: didSelectItemAtIndexPath (1:52)
-
StartExchangeAGram: Presenting the FilterViewController (2:56)
-
StartExchangeAGram: Begin Creating a UICollectionView (7:33)
-
StartExchangeAGram: Finishing the UICollectionView (1:33)
-
StartExchangeAGram: FilterCell (7:25)
-
StartExchangeAGram: Implementing our FilterCell (4:21)
-
StartExchangeAGram: PhotoFilters (5:10)
-
StartExchangeAGram: Properties of CIFilters (6:28)
-
StartExchangeAGram: Composite Filters (4:31)
-
StartExchangeAGram: Using the Filters (6:58)
-
StartExchangeAGram: Implementing our Filters (4:08)
-
StartExchangeAGram: Intro to GCD (8:24)
-
StartExchangeAGram: Was that extra work in filteredImageFromImage worth it? (2:09)
-
StartExchangeAGram: Upgrading to XCode 6.1 (5:12)
-
StartExchangeAGram: Adding a ThumbNail to the FeedItem (4:31)
-
StartExchangeAGram: Cleaning out the Old App (1:40)
-
StartExchangeAGram: Creating and Saving a ThumbNail (1:56)
-
StartExchangeAGram: Implementing our ThumbNail (1:48)
-
StartExchangeAGram: Additional Optimizations (2:51)
-
StartExchangeAGram: Cache (4:23)
-
StartExchangeAGram: Cache Image (7:31)
-
StartExchangeAGram: getCachedImage (3:58)
-
StartExchangeAGram: Implementing Caching (2:28)
-
StartExchangeAGram: Saving our Filter Choice (5:47)
-
StartExchangeAGram: Adding a Profile ViewController (2:49)
-
StartExchangeAGram: Adding Elements to the Profile ViewController (2:57)
-
StartExchangeAGram: Install the Facebook SDK (2:55)
-
StartExchangeAGram: Obtain a FacebookAppID (3:13)
-
StartExchangeAGram: Add the Facebook SDK (1:07)
-
StartExchangeAGram: Setting up the PList (3:43)
-
StartExchangeAGram: Bridging Header (3:26)
-
StartExchangeAGram: Prep the AppDelegate with Facebook (1:36)
-
StartExchangeAGram: FacebookLoginView (2:31)
-
StartExchangeAGram: FacebookLoginViewDelegate (2:00)
-
StartExchangeAGram: Delegate Prep (3:05)
-
StartExchangeAGram: Hiding and unhiding our imageView and nameLabel (2:33)
-
StartExchangeAGram: Finishing up our Delegates (4:54)
-
StartExchangeAGram: Profile Segue and Testing (2:04)
-
StartExchangeAGram: Advanced UIAlertController (5:47)
-
StartExchangeAGram: Finishing UIAlertController (6:23)
-
StartExchangeAGram: Refactoring didSelectItemAtIndexPath (3:14)
-
StartExchangeAGram: Setup ShareToFacebook Function (1:15)
-
StartExchangeAGram: Finish shareToFacebook Function (5:27)
-
StartExchangeAGram: Call ShareToFacebook Function (0:36)
-
StartExchangeAGram: Saving Captions (2:56)
-
StartExchangeAGram: Testing this out (2:38)
-
StartExchangeAGram: Adding a MapViewController (6:23)
-
StartExchangeAGram: Adding MapKit (2:09)
-
StartExchangeAGram: CLLocationManager (5:29)
-
StartExchangeAGram: Location Permission (5:16)
-
StartExchangeAGram: Update Model (2:33)
-
StartExchangeAGram: Saving the location (1:11)
-
StartExchangeAGram: ProfileVC to MapVC Segue (0:56)
-
StartExchangeAGram: Add an Annotation (5:46)
-
StartExchangeAGram: Make Request For FeedItems (4:40)
-
StartExchangeAGram: Display Photos (4:30)
-
StartExchangeAGram: Testing the Map (1:16)
-
StartExchangeAGram: Final Adjustments to our Model (4:28)
-
StartExchangeAGram: Adding a Unique ID (1:44)
-
StartExchangeAGram: Implementing our Unique ID (1:39)
-
StartExchangeAGram: Fixing the Image Orientations (8:48)
-
StartExchangeAGram: Adding Assets and Splash Screen (2:11)
-
StartExchangeAGram: Updating the FeedViewController Background (2:12)
-
StartExchangeAGram: Updating the Profile ViewController (4:10)
-
StartAuto Layout: What is it? (3:02)
-
StartAuto Layout: Pinning (3:46)
-
StartAuto Layout: Between Views (2:55)
-
StartAuto Layout: Basic Project, Part1 (5:33)
-
StartAuto Layout: Basic Project, Part 2 (1:44)
-
StartAuto Layout: Basic Project, Part 3 (1:52)
-
StartAuto Layout: Second Project, Part 1 (3:06)
-
StartAuto Layout: Second Project, Part 2 (3:31)
-
StartAuto Layout: Second Project, Part 3 (3:03)
-
StartAuto Layout: Second Project, Part 4 (6:35)
-
StartLogin Project: Setup (9:27)
-
StartLogin Project: Segue's (1:06)
-
StartLogin Project: CreateAccountViewController (6:29)
-
StartLogin Project: Create a Protocol in the CreateAccountViewController (5:49)
-
StartLogin Project: Implement the Delegate (5:06)
-
StartLogin Project: Use NSUserDefaults in the LoginVC (5:55)
-
StartLogin Project: Use NSUserDefaults in the MainVC (3:27)
-
StartTask It: Setup the Settings ViewController (9:20)
-
StartTaskIt: Settings ViewController ViewDidLoad (7:47)
-
StartTask It: Capitalize TableView (9:31)
-
StartTask It: Complete NewTodo TableView (7:06)
-
StartTask It: Additional UITableView DataSource Functions (2:37)
-
StartTask It: SettingsViewController didSelectRowAtIndexPath (5:12)
-
StartTask It: AppDelegate Settings (5:30)
-
StartTask It: Implementing our Settings (3:23)
-
StartTask It: Protocol in the TaskDetailViewController (5:03)
-
StartTask It: Implementing the TaskDetailViewController Protocol (2:34)
-
StartTask It: Updating the taskDetailEdited function (2:50)
-
StartTask It: Protocol AddTaskViewController (2:23)
-
StartTask It: Implementing AddTaskViewController Protocol Functions (5:25)
-
StartTask It: App Icon (1:39)
-
StartTask It: Splash Screen (1:33)
-
StartTask It: Setting Background Colors (4:16)
-
StartTask It: Implementing our Icons (2:03)
-
StartTask It: Updating the ViewController with AutoLayout (4:21)
-
StartMini Project: Size Classes (11:31)
-
StartTask It: Updating the Settings ViewController with Size Classes (10:30)
-
StartTask It: One Fix For the Settings ViewController (0:59)
-
StartTask It: Updating the DetailTaskViewController with Size Classes (5:31)
-
StartTask It: Updating the AddTaskViewController with Size Classes (10:10)
-
StartTask It: Setting up Developer Account (3:29)
-
StartTask It: A Look at the Member Center (3:16)
-
StartTask It: Using Xcode To Setup Certificates Provisioning Profiles and our Device (3:20)
-
StartTask It: Adding iCloud Capability (1:57)
-
StartTask It: Adding the ModelManager Class (3:10)
-
StartTask It: A Look at Model Manager (6:59)
-
StartTask It: Implementing NSNotification Center iCloud (3:13)
-
StartTask It: Refactor Using our Model Manager (4:03)
-
StartFood Tracker: Start Setting up the SearchController (3:47)
-
StartFood Tracker: Finish Setting up the Search Controller (4:19)
-
StartFood Tracker: Arrays for the DataSource (4:58)
-
StartFood Tracker: How Many Rows? (2:04)
-
StartFood Tracker: Show Some Food (2:59)
-
StartFood Tracker: filterContentForSearch (4:47)
-
StartFood Tracker: updateSearchResultsForSearchController (2:38)
-
StartFood Tracker: ScopeButtonTitles (1:34)
-
StartFood Tracker: HTTP Post Request (10:01)
-
StartFood Tracker: Setup our NSURLSessionDataTask (6:51)
-
StartFood Tracker: Test Post HTTP Request (2:19)
-
StartFood Tracker: Setup a DataController (2:58)
-
StartFood Tracker: Completing jsonAsUSDAIDSearchResults (12:43)
-
StartFood Tracker: Error Handling When Making a Request (4:10)
-
StartFood Tracker: Handling the JSON Response (2:58)
-
StartFood Tracker: apiForSearchFoods TableView DataSource (5:43)
-
StartFood Tracker: Update TableView With apiSearchForFoods (3:33)
-
StartFood Tracker: Selecting a Suggested Food (5:09)
-
StartFood Tracker: selectedScopeButtonIndexDidChange (1:49)
-
StartFood Tracker: Creating a USDAItem (5:44)
-
StartFood Tracker: start saveUSDAItemForId Function (4:22)
-
StartFood Tracker: Get the Correct Dictionary (2:54)
-
StartFood Tracker: Request USDAItems for idValue (5:32)
-
StartFood Tracker: Have we Already Saved this Entity? (2:34)
-
StartFood Tracker: Create a USDAItem (2:41)
-
StartFood Tracker: Start Updating the USDAItem (4:06)
-
StartFood Tracker: Saving our First Food Attribute (5:58)
-
StartFood Tracker: Saving Carbohydrates and Fat Total (5:01)
-
StartFood Tracker: Saving Cholesterol and Protein (3:57)
-
StartFood Tracker: Saving Sugar, Vitamin C, and Energy (6:58)
-
StartFood Tracker: Saving our USDA Item (0:38)
-
StartFood Tracker: Save a USDAItem (3:32)
-
StartFood Tracker: Request USDAItems (4:02)
-
StartFood Tracker: Call requestFavoritedUSDAItems (1:28)
-
StartFood Tracker: Update UITableViewDataSource for Favorited USDAItems (1:38)
-
StartFood Tracker: Filter the FavoritedUSDAItems (3:53)
-
StartFood Tracker: Update UITableView DataSource for FilteredFavorited USDAItems (3:03)
-
StartFood Tracker: Add a USDAItem Property to the DetailViewController (0:58)
-
StartFood Tracker: Segueing from the Third ScopeButton (2:18)
-
StartFood Tracker: PrepareForSegue (2:25)
-
StartFood Tracker: Segueing from the Second ScopeButton (1:12)
-
StartFood Tracker: Post Notification with NSNotificationCenter (5:47)
-
StartFood Tracker: NSNotificationCenter in the ViewController (5:28)
-
StartFood Tracker: NSNotificationCenter in the DetailViewController (4:46)
-
StartFood Tracker: Deinit NSNotificationCenter and Test NSNotificationCenter (2:00)
-
StartFood Tracker: Setup createAttributedString (7:03)
-
StartFood Tracker: Show our USDAItem Title (2:56)
-
StartFood Tracker: Setup Additional Attribute Dictionaries (5:08)
-
StartFood Tracker: Begin Adding USDAItem Attributed Strings (7:12)
-
StartFood Tracker: Add Energy Fat and Protein attributedStrings (4:04)
-
StartFood Tracker: Add Sugar and VitaminC attributedStrings (4:19)
-
StartFood Tracker: Add HealthKit (1:58)
-
StartFood Tracker: HealthStore Class (1:44)
-
StartFood Tracker: Setup requestAuthorizationForHealthStore (6:46)
-
StartFood Tracker: HealthKit Authorization (3:33)
-
StartFood Tracker: Start saveFoodItem Function (4:33)
-
StartFood Tracker: Our First HKQuantitySample Energy (4:59)
-
StartFood Tracker: Adding HKQuantitySample Calcium and Carbohydrate (4:23)
-
StartFood Tracker: Adding HKQuantitySample FatTotal and Protein (2:41)
-
StartFood Tracker: Adding HKQuantitySample Sugar and Vitamin C (2:36)
-
StartFood Tracker: Adding HKQuantitySample Cholesterol (3:13)
-
StartFood Tracker: Saving HealthKit (5:29)
-
StartFood Tracker: Eating our Food and Testing Saving (2:19)
-
StartFood Tracker: Adding FoodMetaData and the Conclusion (3:06)
-
StartBitDate: Introduction (2:26)
-
StartBitDate- Create a new Project (2:18)
-
StartBitDate- Create a CardView Class (12:23)
-
StartBitDate- CardView Constraints Part 1 (8:00)
-
StartBitDate- CardView Constrains Part 2 (8:15)
-
StartBitDate- Create SwipeView Class (6:19)
-
StartBitDate- SwipeView Constraints (4:59)
-
StartBitDate- Create CardsViewController (6:35)
-
StartBitDate- Add a frontCard and backCard (5:58)
-
StartBitDate- Add a PanGestureRecognizer to the SwipeView (6:31)
-
StartBitDate- Make the SwipeView Move (3:16)
-
StartBitDate- Add a Function to Reset the SwipeView's Original Position (2:15)
-
StartBitDate- Using UIPanGestureRecognizer's State (5:28)
-
StartBitDate- Adding a Rotation to our SwipeView (8:06)
-
StartBitDate- Fixing our Rotation Animation (1:35)
-
StartBitDate- Track Direction (4:06)
-
StartBitDate- Reset vs Animate ScrollView (2:02)
-
StartBitDate- Defining the SwipeViewDelegate (5:56)
-
StartBitDate- Calling our Protocol Function (6:04)
-
StartBitDate- Implementing our Protocol Functions (3:49)
-
StartBitDate- Decoupling CardView from the SwipeView (5:03)
-
StartBitDate- Adding a Card Struct (4:21)
-
StartBitDate- Refactor using the Card Struct (2:15)
-
StartBitDate- Create a Parse Account (5:54)
-
StartBitDate- Adding the Parse Framework (5:30)
-
StartBitDate- Setup the Bridging-Header File (4:11)
-
StartBitDate- Create a Facebook App (7:51)
-
StartBitDate- Install Cocoapods (3:15)
-
StartBitDate- Install Facebook SDK with Cocoapods (4:09)
-
StartBitDate- Test Parse (7:04)
-
StartBitDate- Facebook Login Handling in App Delegate (3:32)
-
StartBitDate- Create a Login ViewController (3:50)
-
StartBitDate- Logging in with Parse and Facebook (6:08)
-
StartBitDate- Adjusting the User on Parse (1:54)
-
StartBitDate- Saving User Details to Parse (10:41)
-
StartBitDate- Present Cards ViewController from LoginViewController (5:23)
-
StartBitDate- Updating the AppDelegate to be Dyamic (5:45)
-
StartBitDate- Create a User Struct (6:15)
-
StartBitDate- Decoupling the App Delegate (0:55)
-
StartBitDate- Create a ProfileViewController (5:39)
-
StartBitDate- Download a Profile Picture (7:21)
-
StartBitDate- Update User Class in Parse (2:47)
-
StartBitDate- getPhoto with a Nested Function (4:28)
-
StartBitDate- Updating the Profile ViewController (6:22)
-
StartBitDate- Making the ViewController a PageViewController (3:58)
-
StartBitDate- setViewControllers in the PageViewController (5:09)
-
StartBitDate- Update Before and After ViewController (2:44)
-
StartBitDate- Add the PageController to the AppDelegate (1:04)
-
StartBitDate- Changing Transition Styles (2:11)
-
StartBitDate- Adding our Assets (5:01)
-
StartBitDate- Updating NavigationItems in the ProfileViewController (4:54)
-
StartBitDate- Updating NavigationItems in the CardsViewController (3:05)
-
StartBitDate- Go to Next and Previous ViewController (5:06)
-
StartBitDate- Implement Transition From NavigationItems (2:47)
-
StartBitDate- Adding New Users to Parse (5:16)
-
StartBitDate- Query for new PFUsers (6:32)
-
StartBitDate- Fetch Users in the CardsViewController (2:25)
-
StartBitDate- Adding a Name and Image property to our CardView (2:05)
-
StartBitDate- Update createCards function and Add popCard Function (5:16)
-
StartBitDate- Creating cards with the popCard Function (5:35)
-
StartBitDate- Switching Cards (4:39)
-
StartBitDate- Starting an Overlay View (2:46)
-
StartBitDate- Finishing our Overlay (6:56)
-
StartBitDate- Save a Skip (4:25)
-
StartBitDate- Challenge - Saving a Like (0:22)
-
StartBitDate- Challenge - Solution Saving a Like (3:26)
-
StartBitDate- Fetching Users without an Action (6:29)
-
StartBitDate- Adding a nah and yeah Button (4:19)
-
StartBitDate- Implement nah and yeah Button Actions (3:50)
-
StartBitDate- Saving Matches (7:26)
-
StartBitDate- Adding a MatchesTableViewController (5:09)
-
StartBitDate- Add a Label and Image to the UserCell (3:51)
-
StartBitDate- Styling the UserCell and Updating the NavBar in the MatchesTableViewController (5:02)
-
StartBitDate- Presenting the MatchesTableViewController (2:43)
-
StartBitDate- Fetch Matches (6:48)
-
StartBitDate- Return a Matches Array (6:09)
-
StartBitDate- Fetching our Matches (2:22)
-
StartBitDate- Updating the TableViewDataSource Functions (6:31)
-
StartBitDate- Adding JSQMessagesViewController (3:12)
-
StartBitDate- Create a ChatViewController (4:41)
-
StartBitDate- Start Implementing the ChatViewController (5:05)
-
StartBitDate- Choosing a Bubble Color and Sending a Message (6:23)
-
StartBitDate- Presenting and Testing the ChatViewController (3:32)
-
StartBitDate- Introduction to Firebase (3:45)
-
StartBitDate- Install Firebase (1:50)
-
StartBitDate- Create a Message Struct (5:26)
-
StartBitDate- Adding Helper Functions to Message (4:22)
-
StartBitDate- Save a Message to Firebase (4:38)
-
StartFetching our Messages from Firebase (7:52)
-
StartBitDate- Displaying and Testing our Fetched Messages (2:48)
-
StartBitDate- Create a MessageListner Class (7:06)
-
StartBitDate- Implement our MessageListener (3:12)
-
StartCongratulations! Next Steps + Resources