我只是在升级到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]...returns一个对象。
发布于 2010-07-06 07:04:36
你确定新闻属性(我猜它是你的细节视图控制器上的一个属性)不是nil吗?您是否确认了newsDetailController和newsDetailController.news都不是nil的假设
iOS4带来了适当的非脆弱iVars。如果在“成功”之前,你在@property声明中做了一些不正确的事情,那么对iOS4的更改现在可能会捕捉到这个错误。
第一步,在调试器中遍历代码,并确保所有内容都具有您期望的值。
发布于 2010-07-06 02:56:54
通常,当获取的结果控制器的索引出现问题时,这是因为节信息犯了错误,例如,在没有节的情况下添加节键。在解决问题之前,您也不应该使用缓存。
在这种情况下,您还需要确保news是一个表示完整实体的对象。如果您使用keypath作为在indexpath处返回的对象,那么它必须是关系另一端的对象,而不能是保存属性数据的对象(如NSString)。
如果news是一个关系,则FRC遍历对象图并返回indexPath。但是,如果news只是一个属性,那么它就没有indexPath,因为indexPaths只描述到对象图中实体的路由。
https://stackoverflow.com/questions/3179472
复制相似问题