2012-01-08 54 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上執行保存。

祝你好運!

相關問題