Core data CoreData与关系-如何避免重复更新
我有CoreData和简单的关系,如下所示。一个具有4个属性的实体词和一个具有一对多关系的章节实体(每个词仅出现在一个章节中,而章节包含多个词)。当我尝试导入一个包含单词列表和相关章节的文件时,数据库中尚未创建的章节会被创建(这是我想要的),但已经存在的章节会被第二次创建(coredata中新的相同条目)。我是否可以在xcdatamodel中激活一个选项来检查和避免关系实体上的重复条目 代码详细信息->Core data CoreData与关系-如何避免重复更新,core-data,Core Data,我有CoreData和简单的关系,如下所示。一个具有4个属性的实体词和一个具有一对多关系的章节实体(每个词仅出现在一个章节中,而章节包含多个词)。当我尝试导入一个包含单词列表和相关章节的文件时,数据库中尚未创建的章节会被创建(这是我想要的),但已经存在的章节会被第二次创建(coredata中新的相同条目)。我是否可以在xcdatamodel中激活一个选项来检查和避免关系实体上的重复条目 代码详细信息-> fileprivate func saveAllWords(_ items: [(name
fileprivate func saveAllWords(_ items: [(name: String, definition: String, example: String, chapter: String)]?) {
for item in items! {
let newWord = Word(context: self.context)
newWord.name = item.name.trimmingCharacters(in: .whitespaces)
newWord.definition = item.definition.trimmingCharacters(in: .whitespaces)
newWord.example = item.example.trimmingCharacters(in: .whitespaces)
newWord.option = 10 // option tag indicating that it's a new entry from external fileI generate a classic word
//
let myNewChapter = Chapter(context: self.context)
myNewChapter.name = item.chapter
newWord.chapter = myNewChapter
}
……
// Save the data in Core Data
do {
try self.context.save()
}
catch {
}
有没有关于如何实现此唯一性约束以解决重复问题的建议?您必须为唯一性属性创建约束。看起来您希望
章节的名称是唯一的
在xcdatamodeld中,选择属性,然后右键约束并添加属性
最后但并非最不重要的一点是,您必须为您的上下文添加合并策略,很可能是在AppDelegate中。有不同的合并策略。你应该看看哪个最适合你的需要
context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
您要查找的特征称为唯一性约束。如果没有看到您的代码,如何将其应用到您的案例中是很难说的。谢谢您的回复,我随附了您可以看到的代码,我想您已经有了与此问题相关的所有主要代码。@pbasdf,或者任何其他知道的人:请您看看我的代码,告诉我遵循您提到的uiqueness约束缺少什么?