Core Data Fetched Properties 对对象之间的连接性进行排名

Posted

技术标签:

【中文标题】Core Data Fetched Properties 对对象之间的连接性进行排名【英文标题】:Core Data Fetched Properties to rank connectivity between Objects 【发布时间】:2009-07-24 09:39:54 【问题描述】:

我想对实体 A 的实例与其他实例或实体 A 在我的图表中的连接强度进行排名。我只需要对最近查看的 n 个实体执行此操作。 我通过另一个实体 B 来描述实体 A 的两个实例之间的关系。这是因为我需要描述每个关系。

我正在考虑使用这样的获取属性:

ANY isSourceOfRelation.destinationThing == "$SOURCE_THING"
OR ANY isDestinationOfRelation.sourceThing == "$SOURCE_THING"

但我对此持谨慎态度,因为我怀疑它会通过关系而是通过详尽的搜索来评估这一点。这在桌面上不会是这样的问题,但在 iPhone 上,我的数据集就不实用了。

由于 Fetched Properties 被延迟评估并随后被缓存,我也许可以访问桌面上每个对象的 fetched 属性,但是这个缓存会保留在 sqlite 存储中吗?

我的替代方法是通过访问每个实体 B 以检索目标实体 A 并随后将它们添加到字典来动态评估它。

该图有 10,000 个实体 A 和它们之间的大约 30,000 个关系(实体 B)。

我的首要任务是表现。

你怎么看?

【问题讨论】:

【参考方案1】:

听起来像是预先计算和按需单独加载的好选择,甚至可能在单独的商店中。如果实际数据很小,那也不会太费力,大多数 iPhone 可以为这类事情腾出一两兆的“磁盘”存储空间。

如果值是可变的,您可以在修改后运行后台线程以确保预计算表保持最新。如果用户在操作完成之前中断操作,“脏”标志会通知您,以便您可以在下次运行应用程序时再次执行此操作。

【讨论】:

以上是关于Core Data Fetched Properties 对对象之间的连接性进行排名的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 中为获取的属性设置限制

即使交易正常,今天也出现多个 ACCOUNT_CANNOT_BE_FETCHED 错误

使用 fetched 属性的核心数据跨存储查询

为啥我不能使用闭包创建 Fetched Results Controller?

项目之solr全文搜索工具之创建项目索引库

对 CoreData 中的 1 个条目使用 Fetched Results Controller