2012-03-17 76 views
2

我有一个NSFetchedResultsController在表格视图中显示“地点”,但是当我更新应该在另一个视图控制器中显示的地点集合时,我的FRC不会更新表格视图。当我添加NSPredicate时,为什么我的NSFetchedResultsController委托会停止触发?

这是一般问题。我的具体情况似乎围绕着支持我的FRC的NSPredicate,因为当我删除NSPredicate(并且仅获得所有位置)时,一切正常。

我的查询是

@"ANY photos.isFavorite == %@", [NSNumber numberWithBool:YES] 

地方照片(我通过CS193P工作)一个一对多的关系。也许我的FRC没有设置观察相关表格或其他内容的变化?

的我的情况附加信息的位:

回答

3

我不知道这是你的情况,但我会发布无论如何。也许这可能是一个有效的解决方法。

NSFetchedResultsController pitfall

希望它能帮助。

+1

是的,就是这样。对于记录来说,FRC不会在除了它要获取的类型之外的实体上找到更改。解决方法是手动“肮脏”相关的实体(在我的情况下,相关的*地点*),所以FRC将看到变化。非常感谢你! – ladenedge 2012-03-17 17:09:09

+0

不客气。 – 2012-03-17 17:12:28

0
  • 你尝试使用,而不是照片上的照片一比一的关系测试一个简单的谓词,例如?

  • “我的FRC不更新表格视图” - 您是否使用-controllerDidChangeContent:?你确认它没有被调用吗?我已经看到,与文档相反,在该方法内的tableView上调用reloadData是不安全的,因为该方法可能在辅助线程而不是主线程上调用。

  • 您是否在同一(主?)线程上执行与MOC相关的所有操作?

+0

一个更简单的谓词确实有效。当我完全省略谓词或者使用严格处理* places *的谓词(而不是提示加入* photos *)时,表视图按照我的预期进行更新。 (回答你的其他两个问题:是的。) – ladenedge 2012-03-17 15:10:20

0

请尝试使用此谓词吗?

@"%@ IN photos.isFavorite", [NSNumber numberWithBool:YES] 
+0

没有工作。 :-(与我的初始查询行为相同) – ladenedge 2012-03-17 15:25:59

相关问题