ExchangeAGram: Introduction
Enroll in Course to Unlock
Course Introduction |
Course Resources |
Downloading Xcode |
Opening XCode and Creating our First Project |
A Brief Tour of Xcode |
Exploring Storyboard |
Setting up a New View |
Adding a Navigation Controller |
Adding a Title and Another Image |
Adding TextFields |
Adding a Button and a Label |
Hooking up our View Objects |
Debugging Connection Errors |
Unhiding our Label |
Changing a Label's Text in Code |
Changing a TextField's Text in Code |
Moving our Label and Closing the Keyboard |
Multi Line Label |
Changing a Label's Color in Code |
Let's Update our Button |
Terminal |
Creating a Project on Github |
Saving our Project to Github |
Adding an Additional Commit |
Downloading and Opening a Project from Github |
Challenge 1: Practicing with the Storyboard |
Challenge 1: Practicing with the Storyboard Solution |
Challenge 2: Save your Changes to Github |
Challenge 2: Save your Changes to Github Solution |
What is a Variable? |
Type Annotations |
Intro to Commenting |
Operations on Variables Ints |
Operations on Variables Floats |
Valid Variable Names |
Typealias |
Numeric Literals |
Strings and Characters |
String Interpolation |
Optionals Int |
String to Double |
Shorthand |
Constants |
Shoe Size Converter |
Refactor Shoe Converter |
Adding Women's Shoes |
Age of Laika |
Age of Laika: Solution Part 1 |
Age of Laika: Solution Part 2 |
If Statements |
Bools |
If Statements Continued |
Numeric Type Conversion |
Age of Laika: Control Flow Challenge |
Age of Laika: Control Flow Solution |
For Loops |
Limitations of For Loops |
99 Sodas Challenge |
99 Sodas Challenge Solution |
Intro to Object Oriented Programming |
What are Structs and Instances? |
Create a New Project and Storyboard Setup |
Make Your Own Struct |
Adding Properties to the Tiger |
Instantiating our First Struct |
Using the Tiger Instance |
Multiple Tigers |
Introduction to Arrays |
Create an Array |
Two Cool Properties of Arrays |
Indexing into an Array and Iterating Over an Array |
Ranges and For in Loops |
For in Enumerate Loop |
Mutating an Array |
Generating a Random Number |
Adding Tigers to an Array |
Show a Random Tiger |
Animating our Tigers |
While Loops |
Recurring Tiger Bug |
Our First Function |
Our First Parameter |
Multiple Parameters |
Return Values |
Another Return Value and Other Function Calls |
Looking at the Current Functions |
The Tiger can Chuff |
Chuff a Number of Times and Self |
Self Continued |
Chuff a Number of Times with Control Flow |
Update Tigers Age Function |
Adding a Random Fact Function |
Switch Statement |
99 Red Balloons Struct Challenge |
99 Red Balloons Storyboard Setup Solution |
99 Red Balloons Struct Solution |
99 Red Balloons Create Balloons Function Solution |
99 Red Balloons Update UI Solution |
Classes and Structs |
Creating a Lion |
Create a Lion Array |
Introduction to Tuples |
Switch Statement with a Tuple |
Update Current Animal |
Displaying both Lions and Tigers |
Lion Roar Function |
Accessing Properties in a Function |
Lion Random Fact Function |
Subclass the Lion Class |
Override Function in LionCub Class |
Super Keyword |
Additional Function and a Female Lion Cub |
Displaying Lion Cubs |
SlotMachine: Introduction |
SlotMachine: Starting our New App |
SlotMachine: Setup ContainerViews |
SlotMachine: Finishing Setup ContainerViews |
SlotMachine: setupFirstContainer |
SlotMachine: setupSecondContainer |
SlotMachine: setupThirdContainer |
SlotMachine: Some more Labels in the ThirdContainer |
SlotMachine: Finish adding Labels to the ThirdContainer |
SlotMachine: Start Setup FourthContainer |
SlotMachine: Another Button in the fourth Container |
SlotMachine: Finishing the fourth Container |
SlotMachine: Adding a Slot Struct |
SlotMachine: Adding Assets |
SlotMachine: Factory Class |
SlotMachine: Create Slot |
SlotMachine: Implementing Create Slot |
SlotMachine: Slots Array |
SlotMachine: Showing Slots |
SlotMachine: Remove old ImageViews |
SlotMachine: hardReset |
SlotMachine: updateMainView |
SlotMachine: showAlertWithText |
SlotMachine: betOneButtonPressed |
SlotMachine: betMaxButtonPressed |
SlotMachine: Reordering Slots into Rows |
SlotMachine: computeWinnings |
SlotMachine: Check for Flush |
SlotMachine: Check for Three in a Row |
SlotMachine: Check for Three of a Kind |
SlotMachine: Finishing Touches |
Lemonade Stand Assignment!!! |
Lemonade Stand: Storyboard Solution |
Lemonade Stand: Connection's Solution |
Lemonade Stand: Supplies Solution |
Lemonade Stand: Price Solution |
Lemonade Stand: Instantiating Price and Supplies Solution |
Lemonade Stand: Instantiating Tracking Values Solution |
Lemonade Stand: updateMainView Solution |
Lemonade Stand: showAlertWithText Solution |
Lemonade Stand: Use updateMainView Solution |
Lemonade Stand: startDayButtonPressed Solution |
Lemonade Stand: purchase IceCubes and Lemons Solution |
Lemonade Stand: unpurchase IceCubes and Lemons Solution |
Lemonade Stand: Mix Functions Solution |
Lemonade Stand: Clear Mix and Purchases Solution |
Lemonade Stand: Weather Properties Solution |
Lemonade Stand: Indexing into WeatherArray Solution |
Lemonade Stand: Using the Weather Array Solution |
Lemonade Stand: Add weatherImageView Solution |
Lemonade Stand: Adding Image Assets Solution |
Lemonade Stand: Displaying Weather Solution |
Task It: Setup Options |
Task It: Add a TableView |
Task It: Add a TableViewCell |
Task It: UITableViewDataSource and UITableViewDelegate |
Task It: TableView Outlet Hookup |
Task It: Updating UITableViewDataSource Delegate |
Task It: Setting up Prototype Cell |
Task It: Updating UITableViewDataSource |
Task It: Adding Labels to the TaskCell |
Task It: Adding Tasks |
Task It: TaskModel |
Task It: Implementing the TaskModel |
Task It: TaskDetailViewController |
Task It: didSelectRowAtIndexPath |
Task It: PrepareForSegue |
Task It: Updating the DetailTaskViewController |
Task It: Date Class |
Task It: Updating Dates |
Task It: NSDate to String |
Task It: Update DatePicker |
TaskIt: AddTaskViewController and Storyboard Changes |
Task It: Dismiss and Pop ViewControllers |
Task It: AddTaskViewController Setup |
Task It: Add a Task |
Task It: AddTask Segue |
Task It: ViewDidAppear |
Task It: Passing the ViewController to the TaskDetailViewController |
Task It: Pop the TaskDetailViewController |
Task It: Update Tasks |
Task It: Organize Tasks by Date |
Task It: TaskModel Completion |
Task It: Creating a BaseArray |
Task It: Updates with the Base Array |
Task It: Finish Fixing the Errors |
Task It: Adding Section Headers |
Task It: Completing Tasks |
Task It: Uncompleting Tasks |
Task It: Getting Ready for CoreData |
Task It: Setting up the CoreData Stack |
Task It: Setting up the new TaskModel |
Task It: Creating and Accessing a TaskModel |
Task It: Setting Up the FetchedResultsController |
Task It: Updating the UITableView DataSource Functions |
Task It: Updating prepareForSegue and Removing MainVC Properties |
Task It: Updating doneBarButtonItemPressed Function |
Task It: Adding Completion Sort Descriptor |
ExchangeAGram: Introduction |
ExchangeAGram: Setup |
ExchangeAGram: Storyboard Updates |
ExchangeAGram: UICollectionViewDataSource |
ExchangeAGram: FeedCell |
ExchangeAGram: CameraController |
ExchangeAGram: Photo Library |
ExchangeAGram: didFinishPickingImage |
ExchangeAGram: Creating a FeedItem |
ExchangeAGram: Persisting a FeedItem |
ExchangeAGram: NSFetchRequest |
ExchangeAGram: Displaying the FeedItem |
ExchangeAGram: FilterViewController |
ExchangeAGram: didSelectItemAtIndexPath |
ExchangeAGram: Presenting the FilterViewController |
ExchangeAGram: Begin Creating a UICollectionView |
ExchangeAGram: Finishing the UICollectionView |
ExchangeAGram: FilterCell |
ExchangeAGram: Implementing our FilterCell |
ExchangeAGram: PhotoFilters |
ExchangeAGram: Properties of CIFilters |
ExchangeAGram: Composite Filters |
ExchangeAGram: Using the Filters |
ExchangeAGram: Implementing our Filters |
ExchangeAGram: Intro to GCD |
ExchangeAGram: Was that extra work in filteredImageFromImage worth it? |
ExchangeAGram: Upgrading to XCode 6.1 |
ExchangeAGram: Adding a ThumbNail to the FeedItem |
ExchangeAGram: Cleaning out the Old App |
ExchangeAGram: Creating and Saving a ThumbNail |
ExchangeAGram: Implementing our ThumbNail |
ExchangeAGram: Additional Optimizations |
ExchangeAGram: Cache |
ExchangeAGram: Cache Image |
ExchangeAGram: getCachedImage |
ExchangeAGram: Implementing Caching |
ExchangeAGram: Saving our Filter Choice |
ExchangeAGram: Adding a Profile ViewController |
ExchangeAGram: Adding Elements to the Profile ViewController |
ExchangeAGram: Install the Facebook SDK |
ExchangeAGram: Obtain a FacebookAppID |
ExchangeAGram: Add the Facebook SDK |
ExchangeAGram: Setting up the PList |
ExchangeAGram: Bridging Header |
ExchangeAGram: Prep the AppDelegate with Facebook |
ExchangeAGram: FacebookLoginView |
ExchangeAGram: FacebookLoginViewDelegate |
ExchangeAGram: Delegate Prep |
ExchangeAGram: Hiding and unhiding our imageView and nameLabel |
ExchangeAGram: Finishing up our Delegates |
ExchangeAGram: Profile Segue and Testing |
ExchangeAGram: Advanced UIAlertController |
ExchangeAGram: Finishing UIAlertController |
ExchangeAGram: Refactoring didSelectItemAtIndexPath |
ExchangeAGram: Setup ShareToFacebook Function |
ExchangeAGram: Finish shareToFacebook Function |
ExchangeAGram: Call ShareToFacebook Function |
ExchangeAGram: Testing this out |
ExchangeAGram: Saving Captions |
ExchangeAGram: Adding a MapViewController |
ExchangeAGram: Adding MapKit |
ExchangeAGram: CLLocationManager |
ExchangeAGram: Location Permission |
ExchangeAGram: Update Model |
ExchangeAGram: Saving the location |
ExchangeAGram: ProfileVC to MapVC Segue |
ExchangeAGram: Add an Annotation |
ExchangeAGram: Make Request For FeedItems |
ExchangeAGram: Display Photos |
ExchangeAGram: Testing the Map |
ExchangeAGram: Final Adjustments to our Model |
ExchangeAGram: Adding a Unique ID |
ExchangeAGram: Implementing our Unique ID |
ExchangeAGram: Fixing the Image Orientations |
ExchangeAGram: Adding Assets and Splash Screen |
ExchangeAGram: Updating the FeedViewController Background |
ExchangeAGram: Updating the Profile ViewController |
Auto Layout: What is it? |
Auto Layout: Pinning |
Auto Layout: Between Views |
Auto Layout: Basic Project, Part1 |
Auto Layout: Basic Project, Part 2 |
Auto Layout: Basic Project, Part 3 |
Auto Layout: Second Project, Part 1 |
Auto Layout: Second Project, Part 2 |
Auto Layout: Second Project, Part 3 |
Auto Layout: Second Project, Part 4 |
ExchangeAGram: Adding App Icons |
ExchangeAGram: Launch Screen |
ExchangeAGram: Auto Layout FeedViewController and MapViewController |
ExchangeAGram: AutoLayout ProfileViewController |
Task It: Fix TableView Headers |
Task It: Fixing Task Completion |
Login Project: Setup |
Login Project: Segue's |
Login Project: CreateAccountViewController |
Login Project: Create a Protocol in the CreateAccountViewController |
Login Project: Implement the Delegate |
Login Project: Use NSUserDefaults in the LoginVC |
Login Project: Use NSUserDefaults in the MainVC |
Task It: Setup the Settings ViewController |
TaskIt: Settings ViewController ViewDidLoad |
Task It: Capitalize TableView |
Task It: Complete NewTodo TableView |
Task It: Additional UITableView DataSource Functions |
Task It: SettingsViewController didSelectRowAtIndexPath |
Task It: AppDelegate Settings |
Task It: Implementing our Settings |
Task It: Protocol in the TaskDetailViewController |
Task It: Implementing the TaskDetailViewController Protocol |
Task It: Updating the taskDetailEdited function |
Task It: Protocol AddTaskViewController |
Task It: Implementing AddTaskViewController Protocol Functions |
Task It: App Icon |
Task It: Splash Screen |
Task It: Setting Background Colors |
Task It: Implementing our Icons |
Task It: Updating the ViewController with AutoLayout |
Mini Project: Size Classes |
Task It: Updating the Settings ViewController with Size Classes |
Task It: One Fix For the Settings ViewController |
Task It: Updating the DetailTaskViewController with Size Classes |
Task It: Updating the AddTaskViewController with Size Classes |
Task It: Setting up Developer Account |
Task It: A Look at the Member Center |
Task It: Using Xcode To Setup Certificates Provisioning Profiles and our Device |
Task It: Adding iCloud Capability |
Task It: Adding the ModelManager Class |
Task It: A Look at Model Manager |
Task It: Implementing NSNotification Center iCloud |
Task It: Refactor Using our Model Manager |
FoodTracker: Lets Get Started |
Food Tracker: DetailViewController |
Food Tracker: Conforming to Protocols for the ViewController |
Food Tracker: Start Setting up the SearchController |
Food Tracker: Finish Setting up the Search Controller |
Food Tracker: Arrays for the DataSource |
Food Tracker: How Many Rows? |
Food Tracker: Show Some Food |
Food Tracker: filterContentForSearch |
Food Tracker: updateSearchResultsForSearchController |
Food Tracker: ScopeButtonTitles |
Food Tracker: Nutrionix_API |
Food Tracker: MakeRequest Get Request |
Food Tracker: Execute HTTP Get Request |
Food Tracker: AppID and AppSecret |
Food Tracker: HTTP Post Request |
Food Tracker: Setup our NSURLSessionDataTask |
Food Tracker: Test Post HTTP Request |
Food Tracker: Setup a DataController |
Food Tracker: Completing jsonAsUSDAIDSearchResults |
Food Tracker: Error Handling When Making a Request |
Food Tracker: Handling the JSON Response |
Food Tracker: apiForSearchFoods TableView DataSource |
Food Tracker: Update TableView With apiSearchForFoods |
Food Tracker: Selecting a Suggested Food |
Food Tracker: selectedScopeButtonIndexDidChange |
Food Tracker: Creating a USDAItem |
Food Tracker: start saveUSDAItemForId Function |
Food Tracker: Get the Correct Dictionary |
Food Tracker: Request USDAItems for idValue |
Food Tracker: Have we Already Saved this Entity? |
Food Tracker: Create a USDAItem |
Food Tracker: Start Updating the USDAItem |
Food Tracker: Saving our First Food Attribute |
Food Tracker: Saving Carbohydrates and Fat Total |
Food Tracker: Saving Cholesterol and Protein |
Food Tracker: Saving Sugar, Vitamin C, and Energy |
Food Tracker: Saving our USDA Item |
Food Tracker: Save a USDAItem |
Food Tracker: Request USDAItems |
Food Tracker: Call requestFavoritedUSDAItems |
Food Tracker: Update UITableViewDataSource for Favorited USDAItems |
Food Tracker: Filter the FavoritedUSDAItems |
Food Tracker: Update UITableView DataSource for FilteredFavorited USDAItems |
Food Tracker: Add a USDAItem Property to the DetailViewController |
Food Tracker: Segueing from the Third ScopeButton |
Food Tracker: PrepareForSegue |
Food Tracker: Segueing from the Second ScopeButton |
Food Tracker: Post Notification with NSNotificationCenter |
Food Tracker: NSNotificationCenter in the ViewController |
Food Tracker: NSNotificationCenter in the DetailViewController |
Food Tracker: Deinit NSNotificationCenter and Test NSNotificationCenter |
Food Tracker: Setup createAttributedString |
Food Tracker: Show our USDAItem Title |
Food Tracker: Setup Additional Attribute Dictionaries |
Food Tracker: Begin Adding USDAItem Attributed Strings |
Food Tracker: Add Energy Fat and Protein attributedStrings |
Food Tracker: Add Sugar and VitaminC attributedStrings |
Food Tracker: Add HealthKit |
Food Tracker: HealthStore Class |
Food Tracker: Setup requestAuthorizationForHealthStore |
Food Tracker: HealthKit Authorization |
Food Tracker: Start saveFoodItem Function |
Food Tracker: Our First HKQuantitySample Energy |
Food Tracker: Adding HKQuantitySample Calcium and Carbohydrate |
Food Tracker: Adding HKQuantitySample FatTotal and Protein |
Food Tracker: Adding HKQuantitySample Sugar and Vitamin C |
Food Tracker: Adding HKQuantitySample Cholesterol |
Food Tracker: Saving HealthKit |
Food Tracker: Eating our Food and Testing Saving |
Food Tracker: Adding FoodMetaData and the Conclusion |