如何在此fetchedResultsController委托方法中访问对象实际值?
我想根据对象的值设置要删除/更改的行的索引路径部分,因为该表有多个数据源
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
....get objects value, e.g. myEntity.city
}
现在我知道对象永远是类myEntity(至少最终,不确定“anObject”究竟指的是什么),但显然当我想设置myEntity * anEntity = anObject的实例时,编译器会抱怨;
我的解决方法是将每个部分的数据放入数组中,并完成所有工作 tableView:commitEditingStyle:forRowAtIndexPath:我知道哪个部分被调用,我只需要访问indexpath.row。缺点是我必须在每次更改后重新加载数组,并且不能直接使用fetchedResultsController。
编辑: 接受的答案很好,这个捷径似乎也适用于我的目的:
NSString *aString = [anObject valueForKey:@"city"];
答案 0 :(得分:1)
编译器确实抱怨,但它只是一个警告,因为你没有告诉它会发生什么。它很简单:
myEntity *anEntity = (myEntity *)anObject;
那就是说,你确实需要确定它是正确的类,所以添加一点保护是值得的:
if ([anObject isKindOfClass:[myEntity class]) {
myEntity *anEntity = (myEntity *)anObject;
// do stuff
} else {
NSLog(@"Panic / cry / plead");
}