Core data 删除服务器端的更改

Core data 删除服务器端的更改,core-data,restkit,sync,Core Data,Restkit,Sync,我使用RestKit从web服务器接收数据并将其存储在核心数据中 一切正常,对象映射也正常 但是现在我有一个问题。 我想将我的设备与来自web服务器的数据同步。 使用新对象或更新对象的方法是明确的,因为RestKit为我控制它。但如何删除核心数据中的对象?有一种方法可以使用DELETE方法。但是,如果服务器上的某些对象被删除,情况又会怎样呢 我想发出一个带有上次同步时间戳的GET请求,以接收所有数据更改(增量) 新对象(确定) 修改对象(确定) 删除的对象(如何删除?) 如何使用JSON负载

我使用RestKit从web服务器接收数据并将其存储在核心数据中

一切正常,对象映射也正常

但是现在我有一个问题。 我想将我的设备与来自web服务器的数据同步。 使用新对象或更新对象的方法是明确的,因为RestKit为我控制它。但如何删除核心数据中的对象?有一种方法可以使用
DELETE
方法。但是,如果服务器上的某些对象被删除,情况又会怎样呢

我想发出一个带有上次同步时间戳的GET请求,以接收所有数据更改(增量)

  • 新对象(确定)
  • 修改对象(确定)
  • 删除的对象(如何删除?)
如何使用JSON负载从服务器删除核心数据中的对象。 在JSON中设置对象的delete属性时,是否有可能阻止保存?是否有从核心数据中删除此对象的方法。

解决方案n°1:The
removed
属性 依我看,删除所有未出现在请求响应中的本地对象不是一个好的解决方案。所以我只添加了一个属性
removed
(不是
deleted
,因为它是由核心数据保留的),并且只显示
Object[removed=FALSE]

在提取请求中,它将是:

removed == FALSE
解决方案2:我应该删除什么? 您可以在API中创建一个简单的页面,指示要在应用程序中删除的内容。例如:

[
  {'type': 'post', 'id': 5},
  {'type': 'comment', 'id': 10},
]

然后,您将通过
postID
commentID
获取对象,并将其从存储中删除。随着列表的增加,您必须找到一种方法来向服务器确认删除操作。

这对我很有效。我正在使用RESTKit0.10.2

#pragma Mark - RKObjectLoaderDelegate
- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects {

    //Select all users in Core Data
    NSArray* allUsers = [User findAll]; 

    for (User *userRecord in allUsers) { 

        // check each user into objects loaded now. If not contains, delete him
        if (NO == [objects containsObject:userRecord]) {

                [[[[RKObjectManager sharedManager] objectStore] managedObjectContextForCurrentThread] deleteObject:userRecord];
        }
     } 

     //Saving changes in MOC
     NSError* error = nil; 
     [[[[RKObjectManager sharedManager] objectStore] managedObjectContextForCurrentThread] save:&error]; 

     if (nil != error) { 
        NSLog(@"################# Error %@", error);
     }

}