Core data 不使用编辑模式修改核心数据中的记录
我在重新保存核心数据中的记录时遇到问题,我希望有人能帮助我理解我在这里遗漏了什么: 当我想保存记录时,我有我的“产品”表视图,代码如下:Core data 不使用编辑模式修改核心数据中的记录,core-data,nsmanagedobject,nsmanagedobjectcontext,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我在重新保存核心数据中的记录时遇到问题,我希望有人能帮助我理解我在这里遗漏了什么: 当我想保存记录时,我有我的“产品”表视图,代码如下: - (IBAction)save:(id)sender { MyCoreDataClass *productOne = [NSEntityDescription insertNewObjectForEntityForName:@"MyCoreDataClass" inManagedObjectContext:self.managedObjectContext
- (IBAction)save:(id)sender
{
MyCoreDataClass *productOne = [NSEntityDescription insertNewObjectForEntityForName:@"MyCoreDataClass" inManagedObjectContext:self.managedObjectContext];
productOne.reference = reference.text;
productOne.type = type.text;
productOne.cost = cost.text;
[self.managedObjectContext save:nil];
[self dismissModalViewControllerAnimated:YES];
}
正如您已经了解的,我有一个“产品列表”表视图,其中所有记录都被很好地显示/保存,在我的“产品列表”didSelectRowAtIndexPath方法中,我已经这样做了:(我不使用segues!)
显示之前保存的信息,之后我已经尝试了“self.managedObjectContext refreshObject”,我知道我的最后一行不正确…我的“产品”表视图的代理是我的“产品列表”表视图…我看到了用户在编辑模式下输入的示例,但我只是不想这样…我只是想让用户在desire行中按下,修改他想要的内容,然后点击save按钮
我错过了什么,我在这里浪费了几个小时……有人能帮我吗
提前感谢您抽出时间。第一点。以下行不一致:
X *object = (Y*) [fetchedResultsController objectAtIndexPath:indexPath];
X
应该是您需要的类,(Y*)
您可以省略,因为正确的对象类型应该自动返回
第二。保存新实体属性后,有两种方式显示更改
[tableView reloadData]
。如果在父视图控制器出现之前执行此操作,它甚至看起来都不难看,但这可能是一个昂贵的操作NSFetchedResultsControllerDelegate
方法,该方法可以在托管对象发生更改时向视图控制器发出警报。在这里,您只需更新表视图的相应行你好,蒙迪,谢谢你的回答。是的,你是对的,我不需要使用(y*)。但是我的X应该是我的“产品”表视图。另外,我的“产品”表视图中有NSFetchedResultsControllerDelegate,我对我的“产品列表”说她是我的“产品”的代表,之后我有了核心数据所需的所有方法(基于我的研究和苹果核心数据材料)。但是我知道我缺少一些知识,你能不能给我解释得更清楚一些?对不起,你太离谱了。对象(X)是
NSManagedObject
的子类,而不是某些表视图。“列表”不能是某些“产品”的委托。控制器可以是“获取结果”控制器(可能显示产品列表)的代理。一切都清楚,明白X的事了。当我说“产品列表”时,我指的是一个显示由另一个表视图插入的所有产品的表视图(“产品”中有保存按钮),我应该在“产品列表”中更改我的didselectrow还是在“产品”中更加注意我的保存方法?…很抱歉再次打扰您。
X *object = (Y*) [fetchedResultsController objectAtIndexPath:indexPath];