我有Item
和Color
个类。所有对象都从服务器获取。我有一个要求获取所有项目和所有颜色的请求。每个项目都有id
到Color
。
class Color: NSManagedObject {
@NSManaged var id: Int
@NSManaged var name: String
}
class Item: NSManagedObject {
@NSManaged var id: Int
@NSManaged var name: String
@NSManaged var color: Color
}
使用Core Data在数据库中同步这两个列表的最佳方法是什么?
我可以使用一对一的关系但是我不能简单地删除所有Colors
并保存从服务器收到的所有内容,因为Core Data使用自己的ID。可能我应该找到所有颜色并更新它们,同时删除所有不存在的颜色。
我可以使用fetched properties
我可以保存在db color_id
中,并手动搜索Color
答案 0 :(得分:0)
您应始终将关系设为双向,因为这有助于Core Data正确管理自身。然后,您需要为要导入的新数据运行获取请求,以决定是否需要更新或创建。您可以根据要导入的数据大小创建现有颜色ID到托管对象ID的映射,这样您就不需要进行大量提取,这样可以提高导入效率。