好吧,好像我在问一个noob问题(也许我是,我刚刚忽略了重要的细节),但我正在寻找一个关于我可以用作通用NSManagedObject的“区别”数字/属性一个ID号(我不能使用名称b / c我想让用户创建具有相同名称的实体)。如果不存在,请解释我将如何重现这一点。我理解我可以为此添加一个属性并增加一个静态变量(例如:currentId),但如果我这样做,那么我必须考虑一个被删除的实体,然后如何在下一个插入的实体逻辑上放置该索引,然后返回到最后一个索引。
答案 0 :(得分:0)
NSManagedObjects有一个objectID方法,虽然我不相信它们是以任何顺序创建的。
我个人只会使用ID属性。我不明白为什么删除会导致任何问题。 ID只会落后于幕后,没有任何真正的理由向用户展示,对吧?
答案 1 :(得分:0)
核心数据没有自动递增ID字段的概念,请记住核心数据是对象图,而不是数据库。只是数据存储可以由数据库系统支持,一个完美的例子是SqlLite。
NSManagedObjectId有点像一个GUID唯一的URL。如果你想要某种自动增加的id,你必须自己处理这个问题,你可能会有很多不同的方法。您可以拥有一个单独的实体来存储指定的最后一个ID,并在每次创建新记录时读取它,增加该值,将其用作新ID并增加存储值。如果您不希望重新使用ID,这将解决您的删除问题。这里有明显的并发问题,您可能需要解决。另一种方法可能是将ID存储在文件系统上的文件中,或者存储在NSUserDefaults中,只需确保考虑并发性,并且不要意外地将相同的ID分配两次。
答案 2 :(得分:0)