nsfetchedresultscontroller的初始提取返回0个对象,后续提取OK

时间:2013-03-26 15:42:50

标签: ios objective-c core-data nsfetchedresultscontroller

我的NSFetchedResultsController的初始提取返回O个对象。大部分时间(我说10次中有9次)。这不是一个总能重现的错误。

有时我对表的要求会发生变化,而我的谓词也会发生变化。在这种情况下,我删除缓存并将我的FetchedResultsController设置为nil,然后再重新创建它。在这些后续提取中,它始终返回正确的对象。

有问题的提取会从涉及关系的实体中获取对象。

NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"FacebookPost"];
fetch.predicate = [NSPredicate predicateWithFormat:@"postedBy.facebookID == %@", self.user.facebookID];

我有两个实体,|用户|和| FacebookPost | 用户与FacebookPost建立了一对多关系,名为facebookPosts FacebookPost与用户的多对一关系称为postedBy 用户有一个我在谓词中使用的facebookID(见上文)

如果数据库还没有准备就绪,我已经尝试推迟获取,但无济于事。

任何人都可以想到为什么这不是(大部分时间)在初始提取时正确获取?

更新:

如果我在Xcode中启用sql调试,它会在其工作时随意使用不同的SQL语句,并且不会:

曾为:

2013-03-27 06:41:58.420 App [5995:907] CoreData:sql:SELECT COUNT(DISTINCT t0.Z_PK)from ZFACEBOOKPOST t0 WHERE_0.ZPOSTEDBY =?

2013-03-27 06:41:58.432 App [5995:907] CoreData:sql:SELECT 0,t0.Z_PK,t0.Z_OPT,t0.ZMESSAGE,t0.ZSTATUSID,t0.ZTIME,t0.ZPOSTEDBY FROM ZFACEBOOKPOST t0在哪里t0.Z_PK IN(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)ORDER BY t0.ZTIME DESC LIMIT 20

没有工作:

2013-03-27 06:24:06.638 App [66275:c07] CoreData:sql:SELECT COUNT(DISTINCT t0.Z_PK)FROM ZFACEBOOKPOST t0 JOIN ZUSER t1 ON t0.ZPOSTEDBY = t1.Z_PK WHERE t1.ZFACEBOOKID = ?

2013-03-27 06:24:06.641 App [66275:c07] CoreData:sql:SELECT 0,t0.Z_PK,t0.Z_OPT,t0.ZMESSAGE,t0.ZSTATUSID,t0.ZTIME,t0.ZPOSTEDBY FROM ZFACEBOOKPOST t0 JOIN ZUSER t1 ON t0.ZPOSTEDBY = t1.Z_PK WHERE t1.ZFACEBOOKID =?按t0.ZTIME DESC命令

因此,我认为它与核心数据决定在SQL中执行fetch的方式有关。

0 个答案:

没有答案