Core Data 是苹果提供的对象关系映射(ORM)框架。我们可以使用它来管理 App 中的数据,包括存取对象、关系和缓存。
使用 Core Data 的基本步骤:
- 添加 Core Data 支持,需要在 Xcode 中选中 Enable Core Data。
- 创建 .xcdatamodeld 文件来定义数据模型,使用实体(Entities)表示模型,属性(Attributes)表示实体字段。
- 设置 NSManagedObjectModel 和 NSManagedObjectContext。前者创建模型对象,后者进行实体对象的托管与存取。
- 创建 NSFetchRequest 对象来查询数据。
- 使用 NSManagedObjectContext 的 executeFetchRequest(_:) 方法进行查询。
- 使用 NSManagedObjectContext 的 insert(_:) 方法插入数据。
- 使用 NSManagedObjectContext 的 delete(_:) 方法删除数据。
- 调用 NSManagedObjectContext 的 save() 方法来保存上下文。
- 设置 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)
}