检查以前同步的Dropbox数据存储API(iOS)

时间:2014-05-22 04:08:29

标签: ios dropbox-api

我的目标是检查用户的数据存储区,看看他们之前是否已将数据同步到默认数据存储区。如果他们这样做了,我会下拉并同步所有数据。如果他们没有,我会将他们的本地数据推送到Dropbox。

我已经尝试过很多方法来检查数据是否存在,但我的结果却不一致。

我设置了一个按钮来尝试一些代码:

- (IBAction)buttonSyncDropbox:(id)sender {

  //Initiate a Datastore
  DBAccount *account = [[DBAccountManager sharedManager] linkedAccount];
  self.store = [DBDatastore openDefaultStoreForAccount:account error:nil];

  //Sync so our local copy matches the server
  [self.store sync:nil];

  //Check if there is an "aircraft" table already
  DBTable *currentTable = [self.store getTable:@"aircraft"];
  NSArray *list = [currentTable query:nil error:nil];

  NSLog(@"%@",list);

  /* Half the time, the log output shows this:
  "(null)" 

  ...and this the other half:

  (
      "DBRecord(89BvrTEcSElewsFhw0B1mg)",
      "DBRecord(PpGb17BNF3Psn7jR2skZkQ)"
  )
  */
}

每次执行此代码时,我都不会在aircraft表中看到记录列表吗?缺乏一致性很难处理。我应该用观察者或其他什么来听这些数据吗?

1 个答案:

答案 0 :(得分:0)

我的猜测是,这是一场竞争条件。第一次链接帐户时,加载数据需要一些时间,您需要设置一个观察者来等待初始同步。

或许有些困惑在这里:

//Sync so our local copy matches the server
[self.store sync:nil];

那不是sync所做的。 sync做了两件事:

  1. 将上次调用sync后的任何本地更改排队,以便稍后(异步)发送到服务器。
  2. 将已下载的所有远程更改应用于数据存储的本地副本。