iphone – CoreData保存恢复未保存的更改

iphone – CoreData保存恢复未保存的更改,第1张

概述我有一个UITableView中的对象列表,由NSFetchedResultsController管理.当用户选择对象时,将显示编辑视图,允许用户编辑选定的NSManagedObject实例.当用户进行更改时,对象的属性将在对象中更新. 问题是,像往常一样,有一个Save按钮和一个Cancel按钮.如果用户点击保存,则保存NSManagedObjectContext,并反映更改.但是,如果用户点击 我有一个UItableVIEw中的对象列表,由NSFetchedResultsController管理.当用户选择对象时,将显示编辑视图,允许用户编辑选定的NSManagedobject实例.当用户进行更改时,对象的属性将在对象中更新.

问题是,像往常一样,有一个Save按钮和一个Cancel按钮.如果用户点击保存,则保存NSManagedobjectContext,并反映更改.但是,如果用户点击取消,我需要该对象恢复到之前的状态.调用[managedobjectContext rollback]不能用于此目的.

有谁知道如何正确实现这个?我无法在编辑过程中将对象的属性存储为临时单独的ivars,因为有多个对象可以编辑,所有对象都具有不同的属性.

更新

我目前正在做的是将NSManagedobject存储在一个实例变量中,并调用save:来保存并回滚取消.使用object.property = something或[object setValue:something forKey:@“property”]修改实例变量.这不会按预期工作,而是产生此行为:

>如果编辑并保存,更改将按预期更新.但是,如果再次编辑并取消而不进行更改,则对象的状态将恢复为保存之前的状态.
>如果编辑和取消,更改仍会更新,就像保存一样.再次编辑和取消(不进行更改)将使其恢复到之前的状态.

也:

这与我初始化用于填充表视图的NSFetchedResultsController的方式有什么关系吗?码:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];Nsstring *entityname = self.entityname;NSEntityDescription *entity = [NSEntityDescription entityForname:entityname inManagedobjectContext:self.context];[fetchRequest setEntity:entity];NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];[fetchRequest setIncludesPendingChanges:NO];NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedobjectContext:_context sectionnameKeyPath:nil cachename:@"Root"];self.fetchedResultsController = theFetchedResultsController;_fetchedResultsController.delegate = self;
解决方法 看 @L_419_0@.这对您有帮助. 总结

以上是内存溢出为你收集整理的iphone – CoreData保存/恢复未保存的更改全部内容,希望文章能够帮你解决iphone – CoreData保存/恢复未保存的更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存