We may earn an affiliate commission when you visit our partners.
Course image
Andi Setiyadi

COURSE UPDATE RELEASED 

If you are looking for Core Data in SwiftUI, please check the updated course: SwiftUI Series: Core Data in SwiftUI

If you want to develop Core Data using UIKit, keep reading the description below.

Read more

COURSE UPDATE RELEASED 

If you are looking for Core Data in SwiftUI, please check the updated course: SwiftUI Series: Core Data in SwiftUI

If you want to develop Core Data using UIKit, keep reading the description below.

CoreData for iOS Development in Swift

This course was created and updated for Core Data with the latest Swift 4.x (as of We will be using the latest Xcode 10 (Beta) as well as Xcode 9.4 for the course coverage.  

If your project is dealing with older version of Core Data in iOS 9 or prior, and you intend to learn the previous version, my other course Mastering iOS Core Data with Swift is the course you want.

What is Core Data? Why should I know about Core Data?

Core Data is one of the most powerful framework that Apple has provided for developer. "Core Data is a framework that you use to manage the model layer objects in your application. It provides generalized and automated solutions to common tasks associated with object life cycle and object graph management, including persistence." - Source from Apple". 

If you are passionate about learning mobile development for iOS and looking to take your iOS development skills to the next level, Core Data framework should be at the top of your list.

By the time you are done with CoreData for iOS Development in Swift course, you will be ready and very confident to take on any Core Data project coming your way. On top of that, you will be one step closer to become a well rounded iOS developer.

What's in it for me?

In this course I will take you on a journey in the world of Core Data. We will cover all the important aspects of Core Data:

  • Entity

  • Entity Inheritance

  • Attribute Type

  • Relationships

  • ManagedObjectContext

  • ManagedObject

  • PersistentContainer

  • Handling JSON data

  • Predicate

  • CompoundPredicate

  • Fetching

  • Batch Fetching and Update

  • Object Deletion

  • Asynchronous Fetching

  • NSFetchedResultsController

  • Aggregate Functions

  • Grouping

  • Caching

  • Performance Tuning and Best Practices

  • Data Model Versioning

  • Automatic Lightweight Migration

  • Manual Migration with Model Mapping

  • Background process

  • Automatic Subclass and Class Extension Generation

Throughout this course we will look in detail the Core Data framework to provide data storage functionality in iOS applications. We will start by creating a simple app that is utilizing Core Data framework, building our own Core Data stack and eventually using all different Core Data features into our application. 

Performance Tuning and Best Practices

We will cover the various ways on fetching our data and how to efficiently using Core Data in our app. Unit testing and performance tuning will be an important part on how we can monitor our app performance in conjunction with Core Data in our application.

Along with Core Data versioning, migration and iCloud integration, I will take you on developing 5 iOS applications and how we can integrate all of these components into Core Data.

Do at your own pace

Lots of students have different methods of learning. Through out this course I will provide both the starter and final Xcode project solution, so you can either follow along one step at a time or you can jump directly to the final solution. And by the end of this Core Data for Swift Development course, you should be comfortable and ready to integrate Core Data framework in your application.

Target Audience: All iOS developer that would like to take their skills to the next level.

What are the requirements?

  • A Mac laptop or iMac

  • Xcode

  • Some knowledge of Swift development

Enroll now

What's inside

Learning objective

Deep understanding how coredata data persistent works in ios

Syllabus

Welcome
Course Outline and Goals
FAQ
CRUD
Read more
Section Goal
Note for Xcode 10 Storyboarding

On this first app, we are going to build the app from scratch to get the basic idea how to setup a Core Data project from the beginning.  This would be the only time we will be building from a new project.  On subsequent app, you can start following along using a starter project and we will jump right into a Core Data topic.

We will start laying out the UI for Keystone Park app by storyboarding.

In the first part of CREATE data lecture, we are going to build the service layer that will allow us to enter student and lesson information to Core Data.  We will jump into the concept entity and predicate including how to start querying the Core Data based on the search criteria.

We are going start utilizing the service layer to insert new student and lesson record to Core Data.

We will use search criteria to send request to Core Data and display the data in our tableView. This would be the READ part of the CRUD functionality we are building in this Keystone Park app.

We will build the service layer to update the existing record.  This would be the UPDATE part of the CRUD functionality.

We are exploring the DELETE functionality of the CRUD and learn how to properly delete record within entities relationships.

Useful Tool

Learn how a third party tool can help you in dealing with Core Data.  It can visualize your data and how entities relationships is set between entities.

Deletion Rule

Learn how entity relationships with NULLIFY deletion rule affects your app behavior.

Learn how entity relationships with CASCADE deletion rule affects your app behavior.

Learn how entity relationships with DENY deletion rule affects your app behavior.

NSFetchedResultsController

We are going to take a quick look how extract the Core Data boiler plate out of AppDelegate to create a cleaner CoreData stack.

Source Codes

We will look into parsing a json format data and store the extracted information into the Core Data with sqlite backend.

We are going to learn how to fetch data and store the results in NSFetchedResultsController.

We will learn how to populate tableView section and row by utilizing the NSFetchedResultsController coming from the service layer.

Learn the strategy on how to properly update a single record and refresh the UI using NSFetchedResultsController to reflect the changes immediately to the users.

Learn how to run a batch update to modify a set of records and properly refresh the UI.

We will use NSFetchedResultsController to properly handle record deletion in a tableView.

Check this lecture to see how easy doing a grouping of data using NSFetchedResultsController.  We will also explore how to take advantage of data caching which can bring benefits if you are dealing with a large set of data.

Complex Search and Aggregate Functions

We will build a different app on this section, Home Report, that will demonstrate how to perform a more complex search for the Core Data.  


    • We will learn how to setup an inheritance relationships for the entities in the data model which will translate to NSManagedObject inheritance setup.

      We will extract the JSON data and uploading the record to Core Data based on the entity inheritance that we setup in the data model.

      We are going to create an extension to our NSManagedObject class that will provide a service to our data model during data reading and manipulation.

      Explore how we can take advantage of entities relationships in fetching Core Data records.

      Learn how to setup multiple predicates and sort that can be used as search criteria.

      We will learn into using multiple predicates and sort mechanism to query the Core Data entities and relationships.

      Aggregate Function - 1
      Aggregate Function - 2
      Thread Management

      In this section we will demonstrate how managing different managedObjectContexts may affect the performance of your app and provide a better user experience.

      We will explore the private background context and see how it can provide a better user experience.

      We will look into another alternative of managing the managedObjectContext without using a separate background context.

      CoreData Object Model Generation

      Automatic class generation can simplify your NSManagedObject subclass creation and learn the benefits of having this approach.

      Object Model with Class Extension
      Performance Tuning

      This lecture will introduce us to Xcode Memory Debugging and Core Data Profiler. We will inspect the application memory footprint and how the different approach of Core Data implementation can impact the performance of our application. We will look into how to efficiently deal with large images and how to use thumbnail when necessary will bring performance impact to the application.

      We are going to implement batch size fetching to limit the number of records requested from Core Data store to improve the application performance. It is on demand fetching.

      We are going to implement different fetching strategy to improve our application performance. We will be using unit testing to compare the application performance on before and after tuning up our codes.

      Data Model Versioning and Migration
      Section Overview

      We will first look into a simple migration process that will involve a single entity.

      In this lecture we will learn a more complex data migration that will involve multiple entities and how to migrate existing data from an existing entity into new entities.

      We will finish up the complex data migration process by updating the references to previous and new entities.

      Where To Next?
      Congratulations and Bonus Offer

      Good to know

      Know what's good
      , what to watch for
      , and possible dealbreakers
      Acquire foundational skills in Core Data and proficiency in using Core Data for storing and retrieving data in iOS applications
      Provides a comprehensive exploration of iOS development concepts, from entity creation to advanced data manipulation techniques
      Learn object-oriented programming, data modeling, and persistence techniques for iOS development
      Develop reusable program elements leveraging the Core Data framework, maximizing code efficiency
      Taught by an experienced iOS developer with a proven track record of creating engaging and informative courses
      Appropriate for practicing iOS developers, and individuals seeking foundational knowledge of Core Data for iOS development

      Save this course

      Save CoreData for Swift Development (Swift 4.2 & iOS 12) to your list so you can find it easily later:
      Save

      Reviews summary

      Swift coredata development issues

      According to students, this CoreData for Swift Development course has issues related to its inaccuracies. Learners report that there are discrepancies between the course material and the official CoreData documentation provided by Apple. The examples given in the course may also be problematic and not align with Apple's documentation. Overall, students appear to have concerns about the reliability and quality of the course content with respect to Apple's CoreData guidelines.
      Course content does not match Apple documentation.
      "There are several inaccuracies in the course that are contrary to the Apple Core Data documentation and examples."

      Activities

      Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in CoreData for Swift Development (Swift 4.2 & iOS 12) with these activities:
      Organize and review course materials
      Enhances your understanding by providing a structured way to revisit and consolidate the materials covered in the course.
      Browse courses on Core Data
      Show steps
      • Organize your notes, assignments, and quizzes by topic or module.
      • Review the materials regularly to refresh your memory and identify areas that need further attention.
      • Use your organized materials as a reference when working on assignments or projects.
      Read Core Data Programming Guide
      Provides a comprehensive overview of Core Data concepts and best practices, helping you build a strong foundation in data management for iOS applications.
      Show steps
      Follow Core Data tutorial series
      Reinforces Core Data concepts through hands-on practice, allowing you to apply your knowledge in a real-world context.
      Browse courses on Core Data
      Show steps
      • Choose a Core Data tutorial series that aligns with your learning goals.
      • Follow the tutorials step by step, implementing the concepts in your own Xcode project.
      • Experiment with different data models and operations to gain a deeper understanding.
      Five other activities
      Expand to see all activities and additional details
      Show all eight activities
      Participate in Core Data study group
      Engages you in collaborative learning, allowing you to share knowledge, clarify concepts, and receive feedback from peers.
      Browse courses on Core Data
      Show steps
      • Find or create a study group with other students taking the Core Data course.
      • Meet regularly to discuss course material, ask questions, and work on projects together.
      • Contribute actively to the group by sharing your understanding and insights.
      Build a simple Core Data app
      Provides an opportunity to apply your Core Data skills in a practical setting, reinforcing your understanding and enhancing your problem-solving abilities.
      Browse courses on Core Data
      Show steps
      • Design a simple data model for your app.
      • Implement CRUD (Create, Read, Update, Delete) operations using Core Data.
      • Handle data relationships and associations.
      • Test your app's functionality and fix any issues that arise.
      Practice Core Data coding exercises
      Strengthens your Core Data coding skills through repetitive exercises, improving your accuracy and efficiency.
      Browse courses on Core Data
      Show steps
      • Find or create Core Data coding exercises that focus on specific concepts.
      • Solve the exercises multiple times until you achieve a high level of proficiency.
      • Analyze your solutions and identify areas for improvement.
      Mentor junior developers in Core Data
      Solidifies your understanding by explaining concepts to others and providing guidance, while also contributing to their growth and development.
      Browse courses on Core Data
      Show steps
      • Identify junior developers who are interested in learning Core Data.
      • Share your knowledge and experience by answering their questions and providing constructive feedback.
      • Collaborate on projects to provide hands-on guidance and support.
      Develop a prototype app using Core Data
      Challenges you to apply your skills in a real-world setting, fostering innovation and problem-solving abilities.
      Browse courses on Core Data
      Show steps
      • Brainstorm an idea for a prototype app that utilizes Core Data.
      • Design and implement a data model that meets the requirements of your app.
      • Implement CRUD operations, data relationships, and user interface to interact with the Core Data store.
      • Test and refine your prototype, gathering feedback from potential users.

      Career center

      Learners who complete CoreData for Swift Development (Swift 4.2 & iOS 12) will develop knowledge and skills that may be useful to these careers:
      Data Scientist
      Data Scientists use data to solve business problems and create new opportunities. This course provides a strong foundation in data management, analysis, and machine learning, which are essential skills for Data Scientists. The course covers topics such as data modeling, data mining, statistical analysis, and machine learning algorithms, which are all used by Data Scientists to build predictive models and make data-driven decisions. Additionally, the course provides hands-on experience with real-world data sets, which will help you develop the skills you need to succeed as a Data Scientist.
      Data Analyst
      Data Analysts collect, clean, and interpret data to help organizations make informed decisions. This course provides a strong foundation in data management and analysis techniques, which are essential skills for Data Analysts. The course covers topics such as data modeling, data mining, and statistical analysis, which are all used by Data Analysts to extract insights from data. Additionally, the course provides hands-on experience with real-world data sets, which will help you develop the skills you need to succeed as a Data Analyst.
      Data Architect
      Data Architects design and manage the architecture of data systems. This course provides a strong foundation in data architecture principles and practices, which are essential skills for Data Architects. The course covers topics such as data modeling, data integration, and data governance, which are all used by Data Architects to design and manage scalable and reliable data systems. Additionally, the course provides hands-on experience with real-world data architecture projects, which will help you develop the skills you need to succeed as a Data Architect.
      Database Administrator
      Database Administrators manage and maintain databases. This course provides a strong foundation in database management principles and practices, which are essential skills for Database Administrators. The course covers topics such as database design, data modeling, and data security, which are all used by Database Administrators to ensure the integrity and performance of databases. Additionally, the course provides hands-on experience with real-world database management systems, which will help you develop the skills you need to succeed as a Database Administrator.
      Software Developer
      Software Developers design, develop, and maintain software applications. This course provides a strong foundation in software development principles and practices, which are essential skills for Software Developers. The course covers topics such as object-oriented programming, data structures, and algorithms, which are all used by Software Developers to build reliable and efficient software applications. Additionally, the course provides hands-on experience with real-world software development projects, which will help you develop the skills you need to succeed as a Software Developer.
      Software Engineer
      Software Engineers design, develop, and maintain software applications. This course provides a strong foundation in software development principles and practices, which are essential skills for Software Engineers. The course covers topics such as object-oriented programming, data structures, and algorithms, which are all used by Software Engineers to build reliable and efficient software applications. Additionally, the course provides hands-on experience with real-world software development projects, which will help you develop the skills you need to succeed as a Software Engineer.
      Computer Systems Analyst
      Computer Systems Analysts design, implement, and maintain computer systems. This course provides a strong foundation in computer systems analysis principles and practices, which are essential skills for Computer Systems Analysts. The course covers topics such as systems analysis, systems design, and systems implementation, which are all used by Computer Systems Analysts to design and implement reliable and efficient computer systems. Additionally, the course provides hands-on experience with real-world computer systems analysis projects, which will help you develop the skills you need to succeed as a Computer Systems Analyst.
      Cloud Engineer
      Cloud Engineers design, deploy, and maintain cloud-based applications and services. This course provides a strong foundation in cloud computing principles and practices, which are essential skills for Cloud Engineers. The course covers topics such as cloud architecture, cloud security, and cloud management, which are all used by Cloud Engineers to design and manage reliable and scalable cloud-based systems. Additionally, the course provides hands-on experience with real-world cloud computing platforms, which will help you develop the skills you need to succeed as a Cloud Engineer.
      Web Developer
      Web Developers design, develop, and maintain websites and web applications. This course provides a strong foundation in web development principles and practices, which are essential skills for Web Developers. The course covers topics such as HTML, CSS, and JavaScript, which are all used by Web Developers to build and maintain websites and web applications. Additionally, the course provides hands-on experience with real-world web development projects, which will help you develop the skills you need to succeed as a Web Developer.
      Business Analyst
      Business Analysts analyze business needs and develop solutions to improve business processes. This course provides a strong foundation in business analysis principles and practices, which are essential skills for Business Analysts. The course covers topics such as business process modeling, data analysis, and project management, which are all used by Business Analysts to identify and solve business problems. Additionally, the course provides hands-on experience with real-world business analysis projects, which will help you develop the skills you need to succeed as a Business Analyst.
      Project Manager
      Project Managers plan, execute, and close projects to achieve specific goals. This course provides a strong foundation in project management principles and practices, which are essential skills for Project Managers. The course covers topics such as project planning, project scheduling, and project budgeting, which are all used by Project Managers to manage projects successfully. Additionally, the course provides hands-on experience with real-world project management tools and techniques, which will help you develop the skills you need to succeed as a Project Manager.
      Information Security Analyst
      Information Security Analysts protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course provides a strong foundation in information security principles and practices, which are essential skills for Information Security Analysts. The course covers topics such as risk assessment, security controls, and incident response, which are all used by Information Security Analysts to protect computer systems and networks from cyber threats. Additionally, the course provides hands-on experience with real-world information security tools and techniques, which will help you develop the skills you need to succeed as an Information Security Analyst.
      DevOps Engineer
      DevOps Engineers bridge the gap between development and operations teams to ensure that software is delivered quickly and reliably. This course provides a strong foundation in DevOps principles and practices, which are essential skills for DevOps Engineers. The course covers topics such as continuous integration, continuous delivery, and infrastructure automation, which are all used by DevOps Engineers to automate the software delivery process. Additionally, the course provides hands-on experience with real-world DevOps tools and techniques, which will help you develop the skills you need to succeed as a DevOps Engineer.
      Mobile Developer
      Mobile Developers design, develop, and maintain mobile applications. This course provides a strong foundation in mobile development principles and practices, which are essential skills for Mobile Developers. The course covers topics such as iOS development, Android development, and cross-platform development, which are all used by Mobile Developers to build and maintain mobile applications. Additionally, the course provides hands-on experience with real-world mobile development projects, which will help you develop the skills you need to succeed as a Mobile Developer.
      Quality Assurance Analyst
      Quality Assurance Analysts test and evaluate software applications to ensure that they meet quality standards. This course provides a strong foundation in quality assurance principles and practices, which are essential skills for Quality Assurance Analysts. The course covers topics such as software testing, test automation, and defect management, which are all used by Quality Assurance Analysts to ensure that software applications are reliable and bug-free. Additionally, the course provides hands-on experience with real-world software testing tools and techniques, which will help you develop the skills you need to succeed as a Quality Assurance Analyst.

      Reading list

      We've selected eight books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in CoreData for Swift Development (Swift 4.2 & iOS 12).
      Provides a collection of best practices for using Core Data, and good choice for developers who want to learn how to use Core Data effectively. It valuable resource for developers of all levels.
      Deep dive into the Core Data framework. It covers everything from the basics to advanced topics such as concurrency, performance tuning, and data migration. It valuable resource for anyone who wants to learn more about Core Data.
      Provides a step-by-step guide to using Core Data, Apple's framework for managing models and data in iOS applications. It covers all aspects of Core Data, from creating and managing entities and relationships to performing complex queries and handling data changes.
      Provides a practical guide to using Core Data, Apple's framework for managing models and data in iOS applications. It covers all aspects of Core Data, from creating and managing entities and relationships to performing complex queries and handling data changes.
      Deep dive into Core Data. It covers everything from the basics to advanced topics, such as data modeling, performance tuning, and data migration.
      Collection of design patterns for Core Data. It covers a wide range of topics, from data access to data synchronization.

      Share

      Help others find this course page by sharing it with your friends and followers:

      Similar courses

      Here are nine courses similar to CoreData for Swift Development (Swift 4.2 & iOS 12).
      Swift Fundamentals
      Most relevant
      The Ultimate 70+ Hours iOS Development Bootcamp
      Most relevant
      Programming Fundamentals in Swift
      Most relevant
      Advanced Unit Testing with Swift​ iOS Through Mocks and...
      Most relevant
      Toward the Future of iOS Development with Swift
      Most relevant
      Introduction to iOS App Development with Swift 5
      Most relevant
      iOS & Swift: Become An App Developer
      Most relevant
      Unit Testing Swift Mobile App
      Most relevant
      Working with Data in iOS
      Most relevant
      Our mission

      OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

      Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

      Find this site helpful? Tell a friend about us.

      Affiliate disclosure

      We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

      Your purchases help us maintain our catalog and keep our servers humming without ads.

      Thank you for supporting OpenCourser.

      © 2016 - 2024 OpenCourser