自从升级到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]
...返回一个对象。
答案 0 :(得分:2)
您是否肯定新闻属性(我猜它是您的详细视图控制器上的属性)不是nil
?您是否确认newsDetailController
和newsDetailController.news
都不是nil
的假设?
iOS4带来了适当的非易碎iVars。如果你在“工作”之前在你的@property声明中做了一些不正确的事情,那么对iOS4的更改现在可能正在抓住这个错误。
第一步,在调试器中遍历代码并确保所有内容都具有您希望具有值的值。
答案 1 :(得分:0)
通常当某个内容与获取结果控制器的索引不一致时,这是因为部分信息的错误,例如没有部分时添加部分键。在解决问题之前,您也不应使用缓存。
在这种情况下,您还需要确保news
是表示完整实体的对象。如果使用密钥路径作为在索引路径返回的对象,它必须是关系另一端的对象,它不能是保存数据的对象(例如NSString
)。一个属性。
如果news
是关系,则FRC遍历对象图并返回indexPath。但是,如果news
只是一个属性,则它没有indexPath,因为indexPaths仅描述到对象图中实体的路由。