我使用CoreData作为我的应用数据的持久存储,但希望通过索引访问我的数据模型中的元素,而不是每次都遍历整个集合。
例如,如果我有以下形式的数据:
我希望每次都能在不搜索集合的情况下更新元素。
如果数据在数组中,这很容易,即:
Presidents[5] = "Hilary"
除了
之外,在CoreData中执行此操作似乎并不容易for president in Presidents{
if(president.id == 5){
president.name = "Hilary"
}
}
对于大型数据集来说会非常昂贵。我错过了什么吗?
答案 0 :(得分:1)
归功于@JohnElemans,但他发表了评论而不是答案,所以我发布这个给别人带来好处。
将对象从托管对象上下文加载到数组(或字典)中,通过引用传递它们。
在上面的例子中,假设在总统[5]中有一个对象,可以用传统的方式访问它。
presidents[5] = "Hilary"
答案 1 :(得分:0)
如果您使用的是CoreData,则应通过提取来检索数据对象。这允许您仅加载必要的内容。在这种特殊情况下,通过CoreData的objectid检索它有自己的方法。否则你会想要使用谓词来获取。
此链接可以完成您所寻找的内容(在swift中):How can I get core data entity by it's objectID?
在Obj-c中:How to get Core Data object from specific Object ID?
我无法找到有关实现的信息,但随着表内存大小的修复,我认为检索机制很可能与数组类似,但增加了访问磁盘的开销。您不想手动检索所有对象并自己找到objectid。