我正在一个项目上,想将一些初始数据加载到Core Data中。核心数据中有两个属性。首先属于身体部位,其次属于其属性。例如,眼睛具有四种颜色之一,依此类推。数据如下:
眼睛蓝
眼睛棕色
眼睛绿色
眼睛黑
头发红色
头发黑发
金发女郎
服装连衣裙
衣服裙子
衣服鞋
衣服帽子
衣服手套
我已经搜索了一些CSV或pList版本,并听到了一些sqLite装运替代方案,但是无法弄清楚如何有效地完成它们。
对于将较小的初始数据加载到Core Data并从Core Data中删除任何重复值(如果存在)的任何明确解释,我都非常感谢。预先谢谢你。
答案 0 :(得分:0)
下面是一些非常基本的代码,以显示实现此目的的一种简单方法。
您需要添加自己的标识符属性,以便可以检查项目是否已存在。假设您将其称为var values = new Dictionary<string, string>
{
{ "groupID", ChatDetaiils.groupID },
{ "memberID", UserLogin.userID },
{ "Message", File },
// etc..etc
};
var content = new FormUrlEncodedContent(values);
var result = await client.PostAsync("api/FileUpload, content);
。
然后,在启动应用程序时,检查每个默认值,如果尚不存在,请添加它们,如下所示:
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
}
您也可以使用“核心数据唯一约束”,但是我认为这种解决方案要简单得多。希望这会有所帮助!