Swift MyWonders App: Core Data, Maps & Media

Build a Fully-Functional Advanced Swift App with Data, Maps, Photos, Audios and Videos.
4.6 (92 ratings)
Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
4,040 students enrolled
Start Learning Now
  • Lectures 66
  • Length 7 hours
  • Skill Level Intermediate Level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 1/2016 English

Course Description

Note: Xcode 7.3 & Swift 2.2 Videos.

The Swift Core Data, Maps & Media course is unique, because the ultimate deliverable is already delivered! The course app, MyWonders, is similar to 8Apps published 8Wonders app, which already fulfilled all strict Apple's App Store requirements & guidelines.

The course is structured in a step-by-step approach, utilizing advanced instruction methodologies and techniques (including videos with annotations & visual special effects, crystal clear slides of major code text and colorful diagrams) ending with a fully-functional iOS Swift app that you can use as a template for your own ideas. The foundation will be set; you can then build on it many varied and interesting apps.

The course offers a coherent application, which seamlessly allows the user to add their data records and associate them with notes, maps and unlimited photos, audios and videos. MyWonders is a collection of the wonders in your world. It's deliberately fast, simply elegant and totally practical, as you can use it on your own iPhone every day while you are building it.

All course videos are recorded in Full HD 1080p and audios with a Blue Yeti microphone. All major code segments are presented in the videos twice: in Xcode during recording and then PowerPoint slides for crisp crystal clear text and images.

What are the requirements?

  • Development of iOS apps assume access to a Mac (desktop or laptop) and download of Xcode IDE (Integrated Development Environment) and Swift.
  • This course, in particular, needs a physical iPhone! The Xcode Simulator does not have a Camera feature, hence the Camera and Videos sections of the course need connection of a physical (real) iPhone. Also, the Maps AutoLocation and FindMe features need the physical iPhone as there are only limited pre-defined locations on the Xcode Simulator.

What am I going to get from this course?

  • Transform your professional expertise by building a fully-functional and advanced app that you can then finalize with your own enhancements to make it ready for the App Store.
  • Present your App Store app as a testament to your full-circle expertise to potential employers and/or partners.
  • Share a practical real-life app with family, friends and colleagues that they can use daily.
  • Build a fully-functional Swift app with Core Data, maps, photos, audios and videos.
  • Automatically locate the users iPhone, facilitate fast capture of wonders info, map, photos, audios and videos and provide a 'FindMe' function at any time.
  • Learn Swift code structures to add, view and edit Core Data database records.
  • Show maps of any location (using latitude and longitude, spans and regions).
  • Show address (reverse geocoding) of any map location (pin).
  • Select photos from the iPhone Photo Library or capture new photos by camera, add them to wonders, view in a photos table and delete their core data records as needed.
  • Record sounds via microphone and add to wonders. Play and/or delete their core data records as needed from a sounds table.
  • Record videos or select from Photos Library, add to wonders, play and/or delete their core data records as needed from a videos table.
  • Upload to social media, with a Facebook example.
  • Enrich your personal revenue stream with a proven source of income from the App Store, should you choose to market/sell your final app later.

Who is the target audience?

  • The course is designed for aspiring developers, who are a bit familar with Xcode IDE and Swift basic concepts and code structures. Our 'Swift Fast Track' course, see below, is recommended but not required; you will learn everything you need for this course topics inside the course itself.
  • Take this course if you wish to advance your knowledge and real-world expertise, building a complete, fully-functional, advanced, practical App Store ready app.
  • The course focus is Core Data, Maps and Media (photos, audios & videos) covering adding, viewing/playing, editing Core Data records, so suitable for developers who wish to build apps that utilize these functions. Practically, every app that needs persistent storage of data (keep data after app close or phone being switched off) needs Core Data.

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Introduction and Overview
  • Course Introduction
  • Instructor Introduction ( Mazen Kilani / 8Apps )
  • Course Topics
  • Course Objectives
  • Course Audience

What will the course app MyWonders do?

  • Wonders table maintenance (add/edit/delete wonder records)
  • Wonder objects maintenance (add/delete a wonder photos/audios/videos records)
  • 'Where Am I' auto location & Find Me (auto-location, auto-date/time, map view, photo library, camera, audio, video, upload to social media and other share options)
  • Recommended Course Approach to Lectures
  • Optimum Video Playback Settings
  • Optimum Audio Playback Settings
  • Xcode IDE (Integrated Development Environment)
  • Launch Screen Image
  • External App Icons
  • Internal App Icons
Section 2: Project Setup
  • Create New Xcode Project
  • Choose Correct App Template
  • Choose Project Options
  • Check Project Identity & Deployment Info
  • Storyboard Tab Bar Controller with 3 Tabs: WhereAmI, Wonders and Settings
  • Storyboard 3 View Controllers: WhereAmI, Wonders and Settings
  • Tab Bar Icons Segue to the View Controllers
  • Add Tab Bar Item Images
  • Design and Build Launch Screen
  • Add WhereAmI View Label ‘Hello, MyWonders’
  • Assign Attributes to the 3 Storyboard View Controllers: WhereAmI, Wonders and Settings
  • Create 3 Classes, One for Each View Controller.
  • Link Each View Controller to Its Class
  • Wonders Table View Controller (VC) Code Setups for Table Sections, Rows and Cells.
  • Settings Table View Controller (VC) Code Setups for Table Sections, Rows and Cells.
  • Build Project Core Data Entities
    • Wonders (Basic Wonder Data)
    • Photos (Photo Objects of a Wonder)
    • Sounds (Audio Objects of a Wonder)
    • Videos (Movie Objects of a Wonder)
    • Settings (General App Settings)
Section 3: Add Wonder to Core Data
  • Wonders Table ‘Add’ Button
  • Storyboard Add Wonder View Controller Setup
    • Add Wonder View Controller to Storyboard
    • Setup Labels, Text Fields and Buttons on View Controller
  • Wonders Table Segue to Add Wonder
  • Add Wonders View Controller Class File
  • Link Storyboard View Controller Elements to Class
  • Class ‘viewDidLoad’ Function Shows ’Save’ Button
  • Add Wonders ’Save’ Button Action
  • Access Core Data App Delegate & Context
  • Access Entity ‘Wonders’
  • Insert Object ’New Wonder’
  • Assign Values to ‘New Wonder’ Core Data Attributes
  • Review Assignment Differences Between:
    • Value Key
    • Class
  • Wonders Table
    • Access Core Data App Delegate & Context
    • Access Entity ‘Wonders’
    • Retrieve and Show All Wonders
  • Add Wonder
    • Save Confirmation Label
Section 4: View Wonder from Core Data
  • Add a New Storyboard ’View Wonder’ View Controller
  • Segue from Wonder Table Row to View Wonder View Controller
  • All Labels and Fields to View Wonder View Controller
  • Add Class File of View Controller
  • Use AutoLayout to Fix View Wonder VC Elements Alignments
  • Use AutoLayout to Fix Add Wonder VC Elements Alignments
  • Link View Wonder View Controller Elements to Class File
  • Wonders Table Cell Name and Location
  • Wonders Table Delete Action Deletes the Wonder Record from Core Data
  • Wonders Table Row Selection Segues to View Wonder
  • View Wonder Variables and viewDidLoad Shows Initial Values of Data Fields
Section 5: Edit Wonder in Core Data
  • Add Edit Wonder View to Storyboard
  • Segue to the View from Wonders Table
  • Add Edit Wonder Class File
  • Add View Labels & Text Fields with AutoLayout
  • Edit Wonder View Element Links to Class
  • Class Variables & viewDidLoad Initialization
  • Class editSaveButtonAction to Core Data Code
  • Wonder Table Class Function to Launch Edit
  • Add a New Wonder (with Deliberate Typos)
  • View the Wonder Details
  • Edit the Wonder Details (Correct Typos)
  • Delete Wonder Table Record
Section 6: Maps
  • Add Map View to View Wonder
  • Add Map & Location Frameworks to Project
  • Import Frameworks into View Wonder Class
  • Utilize Map & Location Delegates
  • View Wonder Shows a Map View of Wonder Location
  • Location Translates Latitude & Longitude into a Visual Map
  • View Wonder Adds Annotations to the Map View
  • Review Old and New World Wonders
  • Add Sample World Wonders & View
Section 7: Photos
  • Add the Photos View
  • Populate the Photos View with Labels & Buttons
  • Segue from Add Wonder to Photos View
  • Add the Photos View Controller Class
  • Add Photos View Elements (Labels, Switches, Buttons)
  • Link Photos View Elements to Class
  • Test Setup
  • Photos View
    • Imports & Delegates
    • Func to Access Photos Library or Camera
    • Func ImagePicker Cancel
    • Add Image to Core Data
  • Add Wonder Photos Segue to Directly Access the Photos Library for Selection
    • Photos View ’Bypass’ Allows Direct Access
  • Add Wonder Name Keyboard Control to Dismiss Soft Keyboard
    • Return Key Press/Touch
    • Outside TextField Touch
  • Add the App Icon Using Sketch 3.3
  • Add the App Launch Screen Image
  • ‘Add Wonder’ View Controller [VC] Photos Button Image
  • Wonder Photos Table View Controller
  • Segue View Wonder VC to Wonder Photos Table VC
  • Wonder Photos Table Cell Image & Label
  • New Wonder Photos table VC Class File
  • Wonder Photos Table Class Section, Row and Cell Code
  • View Wonder VC 1st Photo Button Image and No. of Photos Label
  • Add Wonder Photos View Tags
  • View Wonder VC
    • viewWillAppear [Select Photos]
  • Wonder Photos VC
    • viewWillAppear [Select Photos]
    • Table Cells [Show Photos in a Table]
  • Add Multiple Photos and View Them
  • Change Table Row Height to Show Full Image
  • Edit Wonder Storyboard VC
    • Add Buttons for Photo Library & Wonder Photos
    • Segue to Photos Library
  • New Wonder Photos Storyboard Table VC
    • Cell to Contain Photo Image
    • Segue from Edit Wonder to Wonder Photos Table
  • Edit Wonder Storyboard VC
    • Buttons & Label for Photo Library Constraints
    • Prepare Segue ‘editToPhotos’
    • viewWillAppear Function
  • Wonder Photos Storyboard Table VC
    • Image Tag 100
  • Edit Wonder Storyboard VC
    • Button & Label Link to Class VC
  • Edit Photos Table VC
    • viewWillAppear Function
    • Table Rows and Cell Configuration
    • viewDidLoad Edit Button
  • Edit Wonder Class View Controller Keyboard Control
  • Edit Wonder Storyboard View Controller TextField Background
  • Final Test
    • Add new wonder
    • Add wonder photos
    • View wonder and its photos
    • Edit wonder, delete photos, view
    • Edit wonder, add photos, view
  • Add Wonder Storyboard VC Camera Button
  • Add Wonder to Photos Segue ‘addToCamera’
  • Add Wonder Class VC
    • Hide/Show Camera Button
    • Prepare for Segue Logic
  • Photos Class VC
    • Photo Source Type ‘Camera’ Logic
    • No Camera Logic
  • Edit Wonder Storyboard VC Camera Button
  • Edit Wonder to Photos Segue ‘editToCamera’
  • Edit Wonder Class VC
    • Prepare for Segue Logic
Section 8: Sounds / Audios
  • Add Wonder Microphone Button
  • Edit Wonder Microphone Button
  • Sounds View Controller
  • Add to Sounds Segue
  • Edit to Sounds Segue
  • New Wonder Sounds Table
  • View Wonder Sounds Button
  • Edit Wonder Sounds Button
  • View to Wonder Sounds Segue
  • Edit to Wonder Sounds Segue
  • Build Sounds Microphone View Controller
    • Wonder Name, Save Confirmation & Status Labels
    • Record, Stop & Play Buttons Outlets & Actions
    • Save Button Action
  • Add AVKit Framework
  • Add Sounds VC Variables
  • Sounds View Controller viewDidLoad
    • Disable Stop & Play Buttons
    • Setup Audio File URL
    • Setup Audio Session Parameters
    • Prepare Recorder to Record
  • AutoLayout: Record, Stop & Play Buttons
  • Stack View: Record, Stop & Play Buttons
  • Sounds View Controller
    • Keyboard Control
    • Record Button Logic
    • Stop Button Logic
    • Play Button Logic
  • Add Wonder Hide/Show Microphone Icon
  • Sounds View Controller
    • Record Button
      • Enabled / Selected Logic
      • Pause Logic
    • Stop Button Enabled / Selected Logic
    • Play Button Enabled / Selected Logic
    • audioRecorderDidFinishRecording
    • audioPlayerDidFinishPlaying
  • Sounds View Controller
    • setupRecorder() Function to Prepare Recorder
    • viewDidLoad calls setupRecorder()
    • soundSaveButtonAction
      • Saves SoundURL to Core Data and
      • Calls setupRecorder() to Prepare for Next Recording
  • View Wonder to
    • Retrieve Sounds and Display Number
    • Segue to Sounds Table View Controller
  • Wonder Sounds Table View to
    • Retrieve Sounds and Populate Table
    • Play Sound When Row Cell Selected
  • Edit Wonder to
    • Retrieve Sounds and Display Number
    • Segue to Sounds Table View Controller
    • Add More Sounds
    • Delete Sounds
Section 9: Videos
  • Storyboard Video View
    • Labels
    • Buttons to
      • Record New Video
      • Select Video from Library
      • Play Last Video
    • Switch to Save or Delete Video
  • Storyboard Video View
    • Add New Label
    • Create File Class Videos View Controller
    • Connect View Elements to Class Videos View Controller
  • Storyboard Video View Connected to it’s Class View Controller
    • Connect All Labels
    • Connect All Action Buttons and Switches
  • New Elements on the View Need AutoLayout to Re-Arrange Affected Current Elements
  • Videos View Controller Code
    • Record New Video
    • viewDidLoad
    • View Library Button Action
    • Image Picker Saving Videos
    • Test on Physical iPhone 6 Plus
  • Add Wonder Storyboard & Class
    • Link Video Rec Button to Class UIButton
    • Update Code for New Button
      • viewDidLoad
      • Segue ‘addToVideos’
  • Videos VC Class
    • viewDidLoad (Wonder Name)
  • Edit Wonder Storyboard & Class
    • Add Video Rec Button & Segue to Videos
    • Update Code
  • Replace Deprecated Code with Recommended Alternatives
  • Remove All Yellow Warning Messages in Xcode
  • Videos VC Class (deprecated in iOS 9)
    • MoviePlayer to AVPlayer
    • ALAssetLibrary to PHPhotoLibrary
  • Add Storyboard Wonder Videos Table View
  • Add Videos Rec Button to View Wonder & Segue to Wonder Videos Table View
  • Add Wonder Videos Table VC Class File
  • Add Videos Rec Button to Edit Wonder & Segue to Wonder Videos Table View
  • Add Label of Number of Videos to the View Wonder View
  • Update View Wonder VC Class Code for the New Segue to Wonder Videos
  • Add Label of Number of Videos to the Edit Wonder View
  • Update Edit Wonder VC Class Code for the New Segue to Wonder Videos
  • Update Add and Edit Wonder VC Class to Show Number of Videos of a Wonder
  • Update Code of Wonder Videos Table Class
    • Imports
    • Variables
    • viewWillAppear
    • Section, Row, Cell
    • Select Row to Play Video
    • Edit to Delete Video
    • viewWillDisappear (to pause/stop video)
  • Delete a Wonder from Wonders Table Should
    • Delete Wonder Record from Wonders Entity
    • Delete Wonder Photos Records from Photos Entity
    • Delete Wonder Sounds Records from Sounds Entity
    • Delete Wonder Videos Records from Videos Entity
Section 10: Settings
  • Add Settings Help
    • Create New View for Help
    • Add a Web View to the Help View
    • Segue from Settings Table Row to Help View
    • Add Help Class File & Link Web View
    • Create Help HTML File and Embed in Web View

Hints, Tips & Tricks

  • Settings Hue & Saturation Color Sliders
  • Wonder Table Color Defaults
Section 11: WhereAmI
  • Setup WhereAmI Storyboard
  • Stack View of Buttons & Image:
    • Photo Library, Camera, Microphone, Video, Upload
    • Image of Photo
  • Find Me! Button
  • Address (4 Lines), Latitude & Longitude
  • Wonder Name TextField
  • Save Confirmation Message
  • Map View
  • Continue Setup WhereAmI View
    • AutoLayout
      • Start at Bottom of View: Stack View, Find Me! And Address, Latitude & Longitude
      • Move to Top of View: Wonder Name & Confirmation
      • Finish in Middle of View: Map
    • Outlets to Class
      • Link All View Elements to WhereAmI View Controller Class
  • WhereAmI View Controller Class
    • Imports
    • Delegates
    • Variables
    • viewDidLoad: Start Updating Locations
    • Func locationManager
      • MapView: Location Finder and Annotation
      • GLCoder: Address from Latitude and Longitude
  • WhereAmI View Save New Wonder to Core Data
  • Wonder Name Text Field Keyboard Control
  • Wonder Name Blank Alert
  • WhereAmI Find Me Button Action
  • Segues from Where Am I View to:
    • Photo Library
    • Camera
    • Sounds / Microphone
    • Videos
  • WhereAmI ‘Upload’ Button Action
  • viewWillAppear: Fetch Latest Wonder Photo
  • Sign In to Facebook
  • WhereAmI New Wonder:
    • Take Photo
    • Upload to Facebook (Photo and Text > Post)
Section 12: Optional Projects
  • Pre-Populate Wonders Table with 7 Old World Wonders
  • Pre-Populate Wonders Table with 7 New World Wonders
  • Hints, Tips & Tricks (and Sample Code!)
  • Settings to a New View to Show/Hide World Wonders (WW)
  • Switches to Show/Hide Old World Wonder and New World Wonders
  • The Wonders Table will Either Show or Not the WWs Depending on the Settings

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Hi, I am Mazen Kilani. I worked at multinational companies like D&B Software, PeopleSoft and Oracle for most of my professional career. My last employment role was as a Senior Principal Technical Support Engineer at Oracle, one of the world’s leading software companies. Academically, I graduated with a B.Sc. (Computer Science) and M.Phil. (Electrical Engineering) degrees from the University of Sussex, Brighton, UK.

I spent 18 years at Oracle/PeopleSoft, and, among other responsibilities, became a Coach on Knowledge Management and Oracle Diagnostic Methodology. I achieved an IC5, the highest technical grade level at Oracle. Use LinkedIn link for my complete profile.

I carry my commitment to excellence to my new ventures. I currently have 4 apps on Apple's App Store, 2 eBooks and 2 courses on Udemy. All are completely free.

I bring to my products (apps, courses and books) extensive experience and a renowned passion for sharing knowledge, with sophistication and comprehensiveness masquerading as elegant simplicity. Explore and enjoy. All the best.

Ready to start learning?
Start Learning Now