NSManagedObject标识号

时间:2011-11-30 05:53:19

标签: iphone objective-c core-data nsmanagedobject

好吧,好像我在问一个noob问题(也许我是,我刚刚忽略了重要的细节),但我正在寻找一个关于我可以用作通用NSManagedObject的“区别”数字/属性一个ID号(我不能使用名称b / c我想让用户创建具有相同名称的实体)。如果不存在,请解释我将如何重现这一点。我理解我可以为此添加一个属性并增加一个静态变量(例如:currentId),但如果我这样做,那么我必须考虑一个被删除的实体,然后如何在下一个插入的实体逻辑上放置该索引,然后返回到最后一个索引。

3 个答案:

答案 0 :(得分:0)

NSManagedObjects有一个objectID方法,虽然我不相信它们是以任何顺序创建的。

我个人只会使用ID属性。我不明白为什么删除会导致任何问题。 ID只会落后于幕后,没有任何真正的理由向用户展示,对吧?

答案 1 :(得分:0)

核心数据没有自动递增ID字段的概念,请记住核心数据是对象图,而不是数据库。只是数据存储可以由数据库系统支持,一个完美的例子是SqlLite。

NSManagedObjectId有点像一个GUID唯一的URL。如果你想要某种自动增加的id,你必须自己处理这个问题,你可能会有很多不同的方法。您可以拥有一个单独的实体来存储指定的最后一个ID,并在每次创建新记录时读取它,增加该值,将其用作新ID并增加存储值。如果您不希望重新使用ID,这将解决您的删除问题。这里有明显的并发问题,您可能需要解决。另一种方法可能是将ID存储在文件系统上的文件中,或者存储在NSUserDefaults中,只需确保考虑并发性,并且不要意外地将相同的ID分配两次。

答案 2 :(得分:0)

您似乎可以在实体上使用NSNumber标识行,然后只需跟踪您拥有的对象数(通过保留var或从存储中获取最大值)。

我在这里找到了一些可以帮助您实现目标的示例。

link