3

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

device1执行一个-deleteEventuallyon foobar。这会导致对象也被自动取消固定。这个删除被传播到后端,后端现在已经删除了 foobar。

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

foobarondevice2的本地数据存储会发生什么?

4

2 回答 2

3

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

于 2015-02-03T23:59:28.170 回答
1

这是我在我的应用程序中使用的此类问题的解决方案:

  1. 使用 PFQuery 从解析中获取对象
  2. 进行本地查询并从本地存储中获取对象
  3. 如果在本地存储中找到对象,则取消固定对象
  4. 固定来自网络的对象

和代码示例:

- (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();
            }
        }];
    }];
}
于 2015-03-26T11:24:51.820 回答