2016-06-21 2 views
0

データベースにNSManagedObject(User)があります。それから私は、データベースからそのオブジェクトをフェッチし、フィールドのfirstNameを更新しようとしている:NSManagedObjectContextはオブジェクトを永続的に更新しません

NSFetchRequest *fetchR = [NSFetchRequest fetchRequestWithEntityName:@"User"]; 
    NSError *err = nil; 
    NSArray *allUsers = [self.managedObjectContext executeFetchRequest:fetchR error:&err]; 

    TMUser *profile = allUsers.firstObject; 
    [profile setValue:@"Username" forKey:@"firstName"]; 

    [self.managedObjectContext save:&err]; 
    if (err) { 
     NSLog(@"Error: %@", err.localizedDescription); 
    } 

コードがエラーなしで渡します。しかし、私がアプリを再起動すると、更新されたフィールド "firstName"なしでリクエストretunrsユーザーを取得します。私はわずか1 NSManagedObjectContextがあります。すべてのコアデータスタックが正常に初期化されました。オブジェクトの変更はコンテキストに登録されていなかったいくつかの理由

Printing description of allUsers: 
<_PFArray 0x14ed6600>(
ID:3451 
firstName:Johnatan 
lastName:Hike 
phone:380995046960 
email:[email protected] 
language:en 
) 

(コンテキストhasChangesは= NOの前に保存しません):の後に私のユーザーであるフェッチ。私は間違って何をしていますか?助けてください、

答えて

0

私は私の問題を解決しました。私はxcdatamodeldスキームからNSManagedObjectサブクラスを作り直しました。私は、NSNumber(別名bool)からBOOLへのデータモデルスキームまたはプロパティタイプの変更に関連しない別のプロパティ(読み取り専用など)を追加すると、データベース内に存在するオブジェクトの更新を停止することがわかりました。

0

私はマスターのコンテキストを保存していないと思います。 、データを保存するすべての子コンテキストに

[managedObjectContext save:&error]; 

と同様にそのマスターコンテキストの後:

あなたが呼んでいることを確認してください。

あなたは1つのグローバル関数(AppDelegate内)saveContextを持っています。これはすべてを保存し、どこからでも安全に呼び出すことができます。

+0

私は1つの(マスター)コンテキストしか持っていません。私はセーブを行います。新しいオブジェクトも挿入されました –

関連する問題