リモートで削除されたエンティティが Core Data とデータストアから削除されないのはなぜですか? RKManagedObjectLoader の - (void)deleteCachedObjectsMissingFromResult:(RKObjectMappingResult *)result の先頭にブレークポイントを設定すると、変数 result に何も含まれていないことがわかります。
RestKit デリゲート (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects にこの機能を実装することでこの問題を解決できましたが、それは私の観点では一種の汚れたコードです。RestKit / Core Data だけでそれを行う必要がありますか?! とにかく、次の実装は問題を解決します:
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
NSArray *allReservations = [Reservation findAll];
for(Reservation *reservationRecord in allReservations) {
if(![objects containsObject:reservationRecord]) {
[[[[RKObjectManager sharedManager] objectStore] managedObjectContextForCurrentThread] deleteObject:reservationRecord];
}
}
}
didLoadObjects の助けを借りずにその問題を解決するアイデアはありますか? 既存のエンティティの追加/更新は正しく機能します。