NSFetchedResultsController iOS 4

时间:2010-07-05 12:35:47

标签: iphone cocoa-touch core-data

自从升级到ios4后,我只在我的应用中收到此错误。

newsDetailController.news = (News *)[self.fetchedResultsController objectAtIndexPath:indexPath];
NSLog(@"\n Indexpath of details news before pass = %@", [self.fetchedResultsController indexPathForObject:newsDetailController.news]);

基本上,这个:

[self.fetchedResultsController indexPathForObject:newsDetailController.news])

返回NULL

为什么会这样?

newsDetailController.news不是NULL

编辑:

要突出显示:

NSLog(@"\n Indexpath of detailssss news before pass = %@", [self.fetchedResultsController indexPathForObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]);

...返回NULL,即使:

[self.fetchedResultsController objectAtIndexPath:indexPath]

...返回一个对象。

2 个答案:

答案 0 :(得分:2)

您是否肯定新闻属性(我猜它是您的详细视图控制器上的属性)不是nil?您是否确认newsDetailControllernewsDetailController.news都不是nil的假设?

iOS4带来了适当的非易碎iVars。如果你在“工作”之前在你的@property声明中做了一些不正确的事情,那么对iOS4的更改现在可能正在抓住这个错误。

第一步,在调试器中遍历代码并确保所有内容都具有您希望具有值的值。

答案 1 :(得分:0)

通常当某个内容与获取结果控制器的索引不一致时,这是因为部分信息的错误,例如没有部分时添加部分键。在解决问题之前,您也不应使用缓存。

在这种情况下,您还需要确保news是表示完整实体的对象。如果使用密钥路径作为在索引路径返回的对象,它必须是关系另一端的对象,它不能是保存数据的对象(例如NSString)。一个属性。

如果news是关系,则FRC遍历对象图并返回indexPath。但是,如果news只是一个属性,则它没有indexPath,因为indexPaths仅描述到对象图中实体的路由。