2012-01-08 53 views
0

从Xcode 4.2拥有核心数据的主从详细模板(适用于iPad),我修改了数据模型并将其他文本视图对象添加到了nib文件中。具有核心数据的主从应用程序

将数据从被管理对象移动到接口对象的代码在ConfigureViewDetailViewController中,它工作正常。

我现在试图在弹出窗口中从一个项目移动到另一个项目时,自动将接口对象数据保存到托管对象数据。

我添加了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]; 
} 
+0

你能提供你的代码吗? – 2012-01-08 16:52:25

+0

- (void)configureView { //更新详细项目的用户界面。 (self.detailItem){ self.sname.text = [self.detailItem valueForKey:@“sname”]; self.saddress.text = [self.detailItem valueForKey:@“saddress”]; } } – Rams 2012-01-08 16:59:55

+0

- (无效)viewWillDisappear:(BOOL)动画 { [self.detailItem的setValue:self.sname.text forKey:@ “SNAME”]; [self.detailItem setValue:self.saddress.text forKey:@“saddress”]; NSError *错误; (@“self.detailItem.managedObjectContext save:&error”){ NSLog(@“Unresolved error%@,%@”,error,[error userInfo]); exit(-1); // fail } [super viewWillDisappear:animated]; } – Rams 2012-01-08 17:02:13

回答

1

首先,在MasterDetail应用程序中,detailViewController通常始终可见并且不会消失。所以这就是为什么viewWillDisappear没有被调用。当然,我不确定你的应用架构的细节,所以我可能是错的。其次,如果用户更改某些数据然后切换到另一个应用程序,请考虑用例。然后在另一个应用程序中,系统终止您的应用程序。用户所做的更改将会丢失,并会与他们所期望的相反。

除非你节省大量的数据在detailViewController接口,考虑保存用户数据的变化后的数据接口比当从managedObject用户切换到managedObject在popoverViewController。即当用户在textView或文本字段中编辑某些数据时,在managedObjectContext上执行保存。

祝你好运!

相关问题