2016-11-12 71 views
2

我使用的是ios 10,xcode 8(如果这很重要,只是提及所有内容)。所以根据wwmd,不需要提取请求来检查核心数据中是否有内容,如果是,则不保存以便不重复。针对这个问题引入了独特的约束。所以我有一个名为List的实体,其中id作为属性。在限制条件下,我列出了id(作为wwmd的示威者)。我还给出了使用合并策略NSMergeByPropertyObjectTrumpMergePolicy的上下文。唯一限制条件不起作用

var context: NSManagedObjectContext { 
    mutating get { 
     if #available(iOS 10.0, *) { 
      let context = persistentContainer.viewContext 
      context.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy 
      return context 
     } else { 
      return managedObjectContext 
     } 
    } 

}

我的观点,它不工作。我可以保存相同的ID,它会重复!!!。并且绝对没有与IOS 10相关的文档。我使用swift IO9 managedObjectContext工作,但无法使其与IOS10 persistentcontainer.viewcontext一起工作。如果有人有这个解决方案,将非常感激。

回答

1

只有在保存上下文时,唯一约束才有效。

创建NSMangaedObjects后,保存NSManagedContext,并在其中创建它们。

是的独特的约束不工作,如果你有你的实体的关系(我试过这与xcode 7.3 ios9)

1

解决方案:我在viewcontroller中需要上下文的视图中添加了mergepolicy。 更新:更好的解决方案:由于核心数据的独特约束不适用于关系,因此我最终使用了Core Store,它拥有绝妙的唯一性算法以及许多有用的核心数据包装。