Core data CoreData与关系-如何避免重复更新

Core data CoreData与关系-如何避免重复更新,core-data,Core Data,我有CoreData和简单的关系,如下所示。一个具有4个属性的实体词和一个具有一对多关系的章节实体(每个词仅出现在一个章节中,而章节包含多个词)。当我尝试导入一个包含单词列表和相关章节的文件时,数据库中尚未创建的章节会被创建(这是我想要的),但已经存在的章节会被第二次创建(coredata中新的相同条目)。我是否可以在xcdatamodel中激活一个选项来检查和避免关系实体上的重复条目 代码详细信息-> fileprivate func saveAllWords(_ items: [(name

我有CoreData和简单的关系,如下所示。一个具有4个属性的实体词和一个具有一对多关系的章节实体(每个词仅出现在一个章节中,而章节包含多个词)。当我尝试导入一个包含单词列表和相关章节的文件时,数据库中尚未创建的章节会被创建(这是我想要的),但已经存在的章节会被第二次创建(coredata中新的相同条目)。我是否可以在xcdatamodel中激活一个选项来检查和避免关系实体上的重复条目

代码详细信息->

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约束缺少什么?