2

オブジェクト マネージャーによって管理されている場合、RestKit で管理オブジェクト プロパティの値を手動で設定する方法は?

コア データの永続化のための永続ストアを備えた RKObjectManager を作成しました。

オブジェクト マネージャーに RKEntityMapping と RKResponseDescriptor を追加しました。

これで、次のようにオブジェクト マネージャーを呼び出すことができます。

[[RKObjectManager sharedManager]
 getObjectsAtPath:@"/path_to_ressource"
 parameters:nil
 success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    // success
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    // report error
}];

また、データは UITableView に適切に表示されます (そのために NSFetchedResultsController を使用しています)。すべて問題ないようです。データは保持されています。

ここで、応答記述子のキーパスに依存するエンティティにプロパティを追加したいと考えています。これをどこでどのように行う必要がありますか?

私の最初の試み:

プロパティをコア データ エンティティに追加し、上記のコードの成功ブロックでこれを試しました。

for (Entity *s in mappingResult.dictionary[@"CurrentEntities"]) {
    s.isCurrent = [NSNumber numberWithBool:YES];
}

for (Entity *s in mappingResult.dictionary[@"OldEntities"]) {
    s.isCurrent = [NSNumber numberWithBool:NO];
}

json が次のようになっていると仮定します。

{
    CurrentEntities: [{ id: 10, title: "bhubhbhu"}, { id: 11, title: "ezeze"}, ...],
    OldEntities: [{ id: 0, title: "rf-reref"}, { id: 1, title: "vcvcvcvcv"}, ...]
}

新しいローカル プロパティを YES または NO に設定した後、実際にテーブル ビューで結果を確認できますが、これらの変更は保持されていないようです。

アイデアはありますか?

編集:

コンテキストを保存すると、変更が正しく永続化されるようです。

NSError *error = nil;
[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext saveToPersistentStore:&error];

編集:

実際には、オブジェクトを変更するたびにコンテキストを保存する必要があるようです。そうしないと、Core Data エラーが発生します。

4

1 に答える 1