从带有核心数据的Xcode 4.2主细节模板(用于iPad)中,我修改了数据模型,并向nib文件中添加了额外的文本视图对象。
用于将数据从托管对象移动到接口对象的代码是在ConfigureView中的DetailViewController中的,它工作得很好。
现在,当我在弹出器中从一个项移到另一个项时,我正在尝试将接口对象数据自动保存到托管对象数据。
我在viewWillDisappear中添加了在DetailViewController中保存的代码,但这似乎没有触发。我是不是遗漏了什么?
- (void)configureView { // Update the user interface for the detail item.
if (self.detailItem) {
self.sname.text = [self.detailItem valueForKey:@"sname"];
self.saddress.text = [self.detailItem valueForKey:@"saddress"];
}
}
- (void)viewWillDisappear:(BOOL)animated {
[self.detailItem setValue: self.sname.text forKey:@"sname"];
[self.detailItem setValue: self.saddress.text forKey:@"saddress"];
NSError *error; if (![self.detailItem.managedObjectContext save:&error]) {
NSLog(@"Unresolved error %@, %@",error,[error userInfo]);
exit(-1); //fail
}
[super viewWillDisappear:animated];
}发布于 2012-01-08 16:58:16
首先,在MasterDetail应用程序中,detailViewController通常是可见的,而不是消失的。这就是为什么没有调用viewWillDisappear的原因。当然,我不确定你的应用架构的细节,所以我可能是错的。
其次,如果用户更改了一些数据,然后切换到另一个应用程序,则考虑用例。然后,在另一个应用程序中,系统终止您的应用程序。您的用户所做的更改将丢失,并将与他们期望的操作背道而驰。
除非您在detailViewController中为接口保存了大量数据,否则请考虑在用户更改接口中的数据之后,而不是在用户从managedObject切换到popoverViewController中的managedObject时,保存数据。例如,当用户编辑textView或textfield中的某些数据时,对managedObjectContext执行保存。
祝好运!
https://stackoverflow.com/questions/8779289
复制相似问题