在Parse Local数据存储区中固定的对象在后端被删除时也会被删除吗?

时间:2015-01-27 21:58:41

标签: parse-platform local-datastore

假设有两个iDevices:device1device2。两个设备都固定了从Parse后端检索到的一些对象foobar

device1-deleteEventually上执行foobar。这会导致对象也自动取消固定。此删除传播到后端,后端现已删除了foobar。

device2执行通常会获取foobar的查询;除了,它不见了。

foobar本地数据存储区device2会发生什么情况?

2 个答案:

答案 0 :(得分:3)

由于本地数据存储是...本地的,因此该对象将保留在第二个设备中,直到它收到有关对象的更新,并再次固定它们(显然取消固定后)。如果您不从后端请求新对象,则不会对第二个进行任何更改。

答案 1 :(得分:1)

以下是我在我的应用中使用的此类问题的解决方案:

  1. 使用PFQuery从解析中获取对象
  2. 使本地存储查询本地和获取对象
  3. 取消固定对象(如果在本地存储中找到它们)
  4. 来自网络
  5. 的PIN对象

    代码示例:

    - (BFTask *)find:(PFQuery *)query {
        return [[query findObjectsInBackground] continueWithSuccessBlock:^id(BFTask *task) {
            BFTask *(^pin)(void) = ^ {
                return [[PFObject pinAllInBackground:task.result] continueWithExecutor:[BFExecutor mainThreadExecutor]
                                                                      withSuccessBlock:^id(BFTask *task) {
                                                                          return task.result;
                                                                      }];
            };
    
            [query fromLocalDatastore];
            return [[query findObjectsInBackground] continueWithBlock:^id(BFTask *task) {
                if (!task.error && [task.result count]) {
                    return [[PFObject unpinAllInBackground:task.result] continueWithBlock:^id(BFTask *task) {
                        return pin();
                    }];
                } else {
                    return pin();
                }
            }];
        }];
    }