2011-07-03 7 views
1

これまでコアデータオブジェクトを正常に保存していました。このコードでは、いくつかのオブジェクトを検索していて、保存されたオブジェクトを更新またはプロパティを追加したいと考えています。iOS経由でCore Dataオブジェクトを保存する際に問題が発生しました

どうやらそれは変更を保存しません、何か考えですか?

NSManagedObjectContext *managedObjectContext = ((VentoAppDelegate*) [[UIApplication sharedApplication] delegate]).managedObjectContext; 
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:EntityNameString inManagedObjectContext:managedObjectContext]; 
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; 
[request setEntity:entityDescription]; 

NSError *error; 
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error]; 
if (objects == nil) { 
    NSLog(@"Error - Events=nil - %@", [error localizedDescription]); 
} 
if ([objects count] > 0) { 
    for (NSManagedObject* object in objects) { 
     if (distance <= maxDistance) { 
      if (bla-bla-bla) { 
       [object setValue:[NSNumber numberWithBool:YES] forKey:@"notification"]; 
       [self saveContext]; 
      } 
     } 
    } 
} 

ありがとうございます!

+2

杓子定規されるように:あなたがしたい「更新またはプロパティの値を_set_」、* *プロパティは設計時の活動で追加、 – bshirley

答えて

3

管理対象オブジェクトを変更すると、その変更はメモリ内でのみ行われます。何かを変更した後は、管理コンテキストを保存する必要があります。

NSError *error; 
    if (![object.managedObjectContext save:&error]) { 
    // Update to handle the error appropriately. 
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
    abort(); // Fail 
} 
+0

おかげでこのような何かを追加!だから 'saveContext'メソッドは何ですか?それらの違いは何ですか? –

+1

私の最後の文を忘れました(削除しました) - 私はCore Dataを初めて知っていて、すべてを正しく覚えていないので、オブジェクトを保存するには 'object.managedObjectContext save:'で十分なので、正しいmanagedObjectContextを保存するだけです。 [self saveContext]が正しく動作しないため、この行を削除することができます。アプリでこのメソッドが何をしているかを確認する必要があります。 – alhcr

+0

すべてのオブジェクトを反復処理し、必要に応じてオブジェクトを保存します。私はあなたの答えを確認します、ありがとう! –

関連する問題