为什么远程删除不从核心数据和数据存储中移除的实体? 在开始时设置一个断点 - (空)deleteCachedObjectsMissingFromResult:(RKObjectMappingResult *)结果RKManagedObjectLoader表明了该变量结果不包含任何东西。
我可以在RestKit委托执行此功能解决这个问题 - (空)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray中*)对象,但是这是我的观点样的不洁代码。 RestKit /核心数据应该这样做本身? 无论如何,以下实施将解决这个问题:
- (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的帮助这个问题? 添加/更新现有实体正常工作。
RestKit只会删除NSManagedObjectContext中的条目。 你的方法只编辑NSManagedObjectContext中的对象,但从来没有将它们保存到对象存储。 确保添加/编辑/删除已完成后,将更改保存到ObjectStore的。
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
NSArray *allReservations = [Reservation findAll];
// Deleting each item in NSManagedObjectContext
for(Reservation *reservationRecord in allReservations) {
if(![objects containsObject:reservationRecord]) {
[[[RKObjectManager sharedManager] objectStore] managedObjectContextForCurrentThread] deleteObject:reservationRecord];
}
}
// Changes only exist in NSManagedObjectContext, delete them in the ObjectStore
NSError *error = nil;
if (![[[RKObjectManager sharedManager] objectStore] managedObjectContextForCurrentThread] save:&error])
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
文章来源: RestKit / Core Data: Remotely deleted entities get not removed from Core Data