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

Do objects pinned in Parse Local datastore get deleted as well when it's deleted on the backend?

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

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

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

device2 的本地数据存储上的 foobar 会怎样?

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

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

  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();
            }
        }];
    }];
}