1

我正在对 MessageObject 执行获取请求并预取以下内容:

[fetchRequest setRelationshipKeyPathsForPrefetching:
   [NSArray arrayWithObjects:@"tags", @"date", nil]];

tags 是多对多关系(即一个 Tag 可以有多个 Message,一个 Message 可以有多个 tag),而 Date 是一对一关系(即一个 Message 只能有一个 Date 而一个日期可以有很多消息)。

当我向下滚动表格时,我会同时访问标签和日期。我启用了 SQLite 调试,所以每次 Core Data 执行故障请求时,它都会出现在日志中。由于某种原因,没有预取 Date 属性,因为每次滚动时,我都会得到CoreData: annotation: fault fulfilled from database for : 0x85bc7b0 <x-coredata://736D04C4-7DB3-40B7-B208-79B5DFD68260/MBDate/p61>

但是,这不会出现在标签中,只有日期。如果我不预取 Tags 属性,那么当我滚动时,Tags 会显示相同的消息,所以我知道预取正在工作,只是不适用于 Date 属性。

关于预取,我有什么不明白的吗?Date 对象有一个字符串属性,在我的 cellForRow 中,我访问了这个字符串属性,由于某种原因,这会导致故障触发(即使它应该已经实现,因为它是预取的。)我误解了什么吗?

4

0 回答 0