1.Core Data结构
-
NSManagedObject 是我们的数据模型,也就是我们的存储对象。由对应的NSManagedObjectContext管理着,我们可以直接在object中获取对应的context对象
unowned(unsafe) open var managedObjectContext: NSManagedObjectContext? { get }
。 - NSManagedObjectContext 被管理对象的上下文。
- NSPersistenStoreCoordinator 模型和数据库之间的桥梁。
- NSPersistentStore 存储对象,实现和数据库SQLite的交互。
2.初始操作
- 导入CoreData库
import CoreData
- 创建数据库模版,即创建Data Model文件,后缀为xcdatamodeld。
img_1.png
- 这里创建一张表Entity,命名为‘Text’。添加一个字段Attribute,命名为‘text’。
img_2.png
var context: NSManagedObjectContext?
// MARK:数据库相关
func setupCoreData() {
// 获取数据库模版的URL,‘momd’是xcdatamodeld文件编译后的后缀,但是这里不能直接用xcdatamodeld当成后缀来读取,否则为nil
let url = Bundle.main.url(forResource: "TextModel", withExtension: "momd")
let objectModel = NSManagedObjectModel(contentsOf: url!)
let cooridate = NSPersistentStoreCoordinator(managedObjectModel: objectModel!)
let docPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
print(">> \(docPath)")
let sqlPath = docPath + "/myText.sqlite"
let sqliteURL = URL.init(fileURLWithPath: sqlPath)
do {
try cooridate.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: sqliteURL, options: nil)
} catch let error {
print(error)
}
context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
context?.persistentStoreCoordinator = cooridate
}
成功执行上面的代码后就会生成一个数据库文件以及两个配置文件。

以上,数据库创建完成。
- 参考文章:传送门
网友评论