核心数据一对一关系更新

时间:2015-06-12 14:38:19

标签: ios swift core-data

我有ItemColor个类。所有对象都从服务器获取。我有一个要求获取所有项目和所有颜色的请求。每个项目都有idColor

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在数据库中同步这两个列表的最佳方法是什么?

  1. 我可以使用一对一的关系但是我不能简单地删除所有Colors并保存从服务器收到的所有内容,因为Core Data使用自己的ID。可能我应该找到所有颜色并更新它们,同时删除所有不存在的颜色。

  2. 我可以使用fetched properties

  3. 我可以保存在db color_id中,并手动搜索Color

1 个答案:

答案 0 :(得分:0)

您应始终将关系设为双向,因为这有助于Core Data正确管理自身。然后,您需要为要导入的新数据运行获取请求,以决定是否需要更新或创建。您可以根据要导入的数据大小创建现有颜色ID到托管对象ID的映射,这样您就不需要进行大量提取,这样可以提高导入效率。