RestKit /核心数据:远程删除实体获得不从核心数据删除(RestKit / Core Data

2019-08-02 18:18发布

为什么远程删除不从核心数据和数据存储中移除的实体? 在开始时设置一个断点 - (空)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的帮助这个问题? 添加/更新现有实体正常工作。

Answer 1:

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