【问题标题】:Restkit.Delete on server sided changes服务器端更改的 Restkit.Delete
【发布时间】:2012-09-04 20:53:23
【问题描述】:

我使用 RestKit 从我的网络服务器接收数据并将其存储在 Core Data 中。

一切正常,对象映射也是如此。

但现在我有一个问题/问题。 我想将我的设备与来自网络服务器的数据同步。 新对象或更新对象的方式很清楚,因为 RestKit 为我控制它。但是如何删除 Core Data 中的对象呢?有一种使用DELETE 方法的方法。但是,如果某些对象在服务器上被删除了呢?

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

  • 新对象(正常)
  • 修改对象(OK)
  • 已删除对象(如何?)

如何使用 JSON 负载从服务器中删除 Core Data 中的对象。 设置 JSON 中对象的删除属性时,是否有可能阻止保存?有没有办法从 Core Data 中删除这个对象。

【问题讨论】:

    标签: core-data restkit sync


    【解决方案1】:

    这对我有用。我正在使用 RestKit 0.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);
         }
    
    }
    

    【讨论】:

      【解决方案2】:

      解决方案 n°1:removed 属性

      恕我直言,删除所有未出现在请求响应中的本地对象并不是一个好的解决方案。所以我只添加一个属性removed(不是deleted,因为它是Core Data 保留的)并且只显示Object[removed=FALSE]

      在获取请求中,它将是:

      removed == FALSE
      

      解决方案 n°2:我应该删除什么?

      您可以在您的 API 中创建一个简单的页面来指示您的应用程序中要删除的内容。例如:

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

      然后,您将通过postIDcommentID 获取对象并将它们从存储中删除。您必须找到一种方法向服务器确认删除,因为列表会增加。

      【讨论】:

        猜你喜欢
        • 2013-10-11
        • 2015-06-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        • 2013-07-17
        相关资源
        最近更新 更多