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.

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.  

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

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.

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.

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.

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

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.

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.

      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.

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

      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.

      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.

      Traffic lights

      Read about what's good
      what should give you pause
      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

      Create your own learning path. Save this course to your list so you can find it easily later.
      Save

      Reviews summary

      Mastering core data for uikit development

      According to learners, this course is a highly valuable resource for mastering Core Data within the UIKit framework. Students frequently highlight the clear and concise explanations provided by the instructor, making complex topics understandable. The hands-on labs and projects are consistently praised for their practical application, helping solidify understanding through building real-world examples. While the course focuses on Swift 4.2 and iOS 12, reviewers find the fundamental Core Data concepts and practices taught remain highly relevant for modern iOS development using UIKit. Some note that a separate course exists for Core Data in SwiftUI.
      Primarily focuses on Core Data with UIKit.
      "It's important to note this course is for Core Data in UIKit, not SwiftUI, as mentioned in the description."
      "If you're specifically looking for SwiftUI Core Data, you'll need the instructor's other course."
      "This course gave me the UIKit background I needed before looking into the SwiftUI implementation."
      Uses examples from Swift 4.2 and iOS 12.
      "The course examples are based on Swift 4.2 and iOS 12, which is good context to be aware of."
      "While the versions might be slightly older, the core Core Data concepts taught are still applicable."
      "I used the provided code with a newer Swift version and only needed minor adjustments."
      Thoroughly covers Core Data for UIKit.
      "This course covers everything I needed to know about Core Data using UIKit, from basics to advanced topics like migration and performance."
      "I feel very confident working with Core Data in my UIKit projects now, thanks to the depth of coverage."
      "It provides a solid foundation in Core Data for anyone developing with UIKit."
      Excellent hands-on labs and projects.
      "The practical examples and projects are a highlight, they really helped me apply what I learned directly."
      "Building the apps alongside the lectures was incredibly useful for understanding how Core Data works in practice."
      "I appreciated the focus on hands-on coding and building functional applications."
      Instructor explains concepts very clearly.
      "The way the instructor explains the concepts is very clear and easy to follow, even for complex topics like threading and migration."
      "I found the explanations to be incredibly clear, making Core Data finally click for me after struggling with it previously."
      "The instructor does a great job of breaking down challenging topics into digestible pieces."

      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.
      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.
      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.
      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.
      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.
      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.
      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.
      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.
      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.
      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.
      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.
      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.

      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

      Similar courses are unavailable at this time. Please try again later.
      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 - 2025 OpenCourser