我正在开发一个项目,希望将一些初始数据加载到核心数据中。核心数据中有两个属性。第一个属于 body 部分,第二个属于其属性(property)。例如眼睛有四种颜色之一等等。数据如下:
眼睛是蓝色的
眼睛棕色
眼睛绿色
眼睛黑
头发红
头发黑发
金发女郎
衣服连衣裙
衣服裙子
衣服鞋子
衣服帽子
衣服手套
我搜索了一些 CSV 或 pList 版本,并听到了一些 sqLite 装运替代方案,但不知道如何有效地执行它们。
我很欣赏任何关于将小型初始数据加载到核心数据以及从核心数据中删除任何重复值(如果存在)的清晰解释。预先感谢您。
最佳答案
这里有一些非常基本的代码,展示了一种简单的方法。
您需要添加自己的标识符属性,以便可以检查项目是否已存在。假设您将其称为id
。
然后,当您启动应用程序时,您会检查每个默认值,如果它们尚不存在,请添加它们,如下所示:
// create a fetch request to get all items with id=1
let fr = NSFetchRequest<MyItem>(entityName: MyItem.entity().name!)
fr.predicate = NSPredicate(format: "id == %@", "1")
do {
// if that request returns no results
if (try myManagedObjectContext.fetch(fr).isEmpty == true) {
// create the default item
let item = NSEntityDescription.insertNewObject(forEntityName: MyItem.entity().name!, into: myManagedObjectContext) as! MyItem
// set the id
item.id = "1"
// set other attributes here
}
} catch {
// fetching failed, handle the error
}
添加数据后,您必须保存它:
// save the context
do {
try myManagedObjectContext.save()
} catch {
// handle the error
}
您还可以使用核心数据唯一约束,但我认为这个解决方案要简单得多。希望这有帮助!
关于swift - 如何在 Swift 中将基本的初始数据和唯一数据加载到 Core Data 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54456436/