我有一个图表,其中包含一种名为“消息”的对象。一条消息可以有子项,因此该图是一棵树。
图上的每个对象都包含一个属性值;这是一种 UUID(全局唯一),因此存储不能包含具有相同 UUID 的多条消息(此 uuid 是从消息数据中获取的字符串,因此我无法使用 nsmanagementobject 的 objectID 替换它)。
当我需要验证对象插入到商店中时,问题发生了。
如何检查商店中是否已存在具有相同 UUID 的消息?我正在考虑 validateForInsert: 事件上的获取请求,但当有很多对象要插入时(在我的例子中大约为 30k),它似乎太慢/太复杂。
有人有最好的解决方案吗?
这是 CoreData 的一个已知限制(我自己已就此提出了功能请求)。你还应该去http://bugreport.apple.com http://bugreport.apple.com并让他们知道您想要此功能。 (原始bug ID为rdar://3711805)
我过去解决这个问题的方法是使用一种方便的方法来访问和创建我的NSManagedObjects
。然后,这个方便的方法在静态中查找NSMutableDictionary
查看是否已创建具有相同唯一属性的另一个对象(唯一属性是键,managementObjectID 是值)。如果找到一个,它只会返回该对象。如果没有,则会创建一个对象并将该对象的 ID 缓存到静态字典中以供将来使用。当应用程序首次启动时,我必须使用预先存在的对象的属性/标识符预先填充此字典。
我知道这很痛苦。 :( 提出增强请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)