IOS 中什么是 Core Data?如何使用?代码举例讲解

Core Data 是苹果提供的对象关系映射(ORM)框架。我们可以使用它来管理 App 中的数据,包括存取对象、关系和缓存。

使用 Core Data 的基本步骤:

  1. 添加 Core Data 支持,需要在 Xcode 中选中 Enable Core Data。
  2. 创建 .xcdatamodeld 文件来定义数据模型,使用实体(Entities)表示模型,属性(Attributes)表示实体字段。
  3. 设置 NSManagedObjectModel 和 NSManagedObjectContext。前者创建模型对象,后者进行实体对象的托管与存取。
  4. 创建 NSFetchRequest 对象来查询数据。
  5. 使用 NSManagedObjectContext 的 executeFetchRequest(_:) 方法进行查询。
  6. 使用 NSManagedObjectContext 的 insert(_:) 方法插入数据。
  7. 使用 NSManagedObjectContext 的 delete(_:) 方法删除数据。
  8. 调用 NSManagedObjectContext 的 save() 方法来保存上下文。
  9. 设置 NSPersistentStoreCoordinator 来管理持久化存储。

下面是一个简单的 Core Data 示例:
model.xcdatamodeld:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="1" systemVersion="1.3.1.961.3.1.1" minimumToolsVersion="Xcode 7.0">
    <entity name="Student" representedClassName="Student" syncable="YES">
        <attribute name="name" optional="YES" attributeType="String"/>
        <attribute name="age" optional="YES" attributeType="Integer 32" defaultValueString="0"/>
    </entity>
</model> 

代码:

swift
let modelURL = Bundle.main.url(forResource: "model", withExtension: "momd")!
let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL)!

let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
let managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = persistentStoreCoordinator   

let student = NSEntityDescription.insertNewObject(forEntityName: "Student", into: managedObjectContext) as! Student
student.name = "John" 
student.age = 30

do {
    try managedObjectContext.save() 
} catch {
    print(error)
}