我有一个奇怪的问题,涉及将NSManagedObject的实例传递给另一个viewcontroller。
我将NSFetchResultsController中提取的NSManagedObject实例传递给另一个viewcontroller。
- (void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath
{
Product* product = (Product*)[self.fetchedResultsController objectAtIndexPath:indexPath];
DetailViewController* pDetailVC = [self.storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
pDetailVC.product = product;
pDetailVC.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:pDetailVC
animated:YES];
}
我正在使用Restkit,而我的managedObjectContext是RKManagedObjectStore mainQueueManagedObjectContext。
我的应用程序也包含一个UITabbarController。
然后我访问传递对象的viewcontroller中的cellForAtIndexPath中传递的对象属性,如下所示:
cell.descLabel.text = self.product.info;
在我viewDtroller的viewDidAppear方法中,我重新加载tableView,以显示传递的实例的数据。当对象传递给viewcontroller时,第一次正常工作,但如果我然后使用tabbar切换到另一个viewcontroller,然后返回到viewcontroller,传递的对象的所有数据都为null,它已被转换为故障。
如何防止这种情况发生,当我回到viewcontroller时,防止数据为空/故障?
答案 0 :(得分:1)
每次切换到tabBar时都会调用viewDidAppear
,不确定导致NSManagedObject
出错的原因,这取决于您是否在同一个上下文中进行其他更改。
如果您仅使用此NSmanagedObject
来显示其属性,我建议您将NSmanagedObject
信息传递给自定义NSObject
子类并在表格数据源上使用该对象