2012-01-08 3 views
0

コアデータを持つXcode 4.2マスター/ディテールテンプレート(iPad用)から、データモデルを変更し、追加のテキストビューオブジェクトをnibファイルに追加しました。コアデータを使用したマスター/ディテールアプリケーション

管理対象オブジェクトからインターフェイスオブジェクトにデータを移動するコードはConfigureViewで、DetailViewControllerであり、正常に動作しています。

私は、ポップオーバーのある項目から別の項目に移動するときに、管理オブジェクトデータにインターフェイスオブジェクトデータを自動的に保存しようとしています。

に保存するコードを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

コードを入力してください。 –

+0

- (void)configureView { //詳細項目のユーザーインターフェイスを更新します。 if(self.detailItem){ self.sname.text = [self.detailItem valueForKey:@ "sname"]; self.saddress.text = [self.detailItem valueForKey:@ "saddress"]; }} – Rams

+0

- (ボイド)viewWillDisappear:アニメーション(BOOL) {[self.detailItemのsetValue:self.sname.textのforKey:@ "SNAME"]。 [self.detailItem setValue:self.saddress.text forKey:@ "saddress"]; NSError *エラー。 if(![self.detailItem.managedObjectContext save:&error]){ NSLog(@ "未解決エラー%@、%@"、エラー、[error userInfo]); exit(-1); // fail } [super viewWillDisappear:animated]; } – Rams

答えて

1

まず、MasterDetailアプリケーションでは、通常、detailViewControllerは常に表示され、消えません。ですから、viewWillDisappearが呼び出されていないのです。もちろん、私はあなたのアプリケーションのアーキテクチャの詳細についてはわからないので、私は間違っているかもしれません。

第2に、ユーザーがデータを変更してから別のアプリケーションに切り替える場合のユースケースを考えてみましょう。その後、他のアプリケーションでは、システムがアプリを終了します。ユーザーが行った変更は失われ、予想どおりに実行されます。

あなたはdetailViewControllerのインターフェイスのために大量のデータを保存している場合を除き、popoverViewControllerでmanagedObjectからmanagedObjectにすると、ユーザーのスイッチよりも、インターフェースではなくにおけるユーザーの変更データの後にデータを保存することを検討してください。すなわち、ユーザがテキストビューまたはテキストフィールド内のいくつかのデータを編集した場合、managedObjectContextに対する保存を実行する。

Good Luck!

関連する問題