これがどのように起こっているのかわかりませんが、かなり複雑な NSPredicate があります:
NSString rentalStatus = @"Available";
[NSPredicate predicateWithFormat:@"(status != nil) AND (status == %@)", rentalStatus]
次に、次のように検索します。
rentals = [RegisterSaleRental findAllSortedBy:@"rental_due_date" ascending:NO withPredicate:predicate];
すべて問題ありませんが、状態を [使用可能] から [レンタル済み] にすばやく設定すると、オブジェクトは画面上で [レンタル済み] と表示されます (ステータスが設定されます) が、[レンタル済み] をフィルターしようとすると:
NSString rentalStatus = @"Rented";
[NSPredicate predicateWithFormat:@"(status != nil) AND (status == %@)", rentalStatus]
レンタル済みに設定したばかりのオブジェクトは表示されません:(利用可能で再度フィルタリングすると表示されますが、結果のオブジェクトで得られるステータスはレンタル済みであるため、基本的に古いデータを検索します。
コアデータを次のように保存すると:
[[NSManagedObjectContext defaultContext] saveToPersistentStoreAndWait];
それはあり、完全に正常に動作します。私の質問は、ステータスなどを変更する前に毎回保存する必要がありますか? これが必要な場所はどこにもありません。ありがとう!
更新 (コア データ セットアップ コード)
// Configure MagicalRecord to use RestKit's Core Data stack
[NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:managedObjectStore.persistentStoreCoordinator];
[NSManagedObjectContext MR_setRootSavingContext:managedObjectStore.persistentStoreManagedObjectContext];
[NSManagedObjectContext MR_setDefaultContext:managedObjectStore.mainQueueManagedObjectContext];