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];