我试图写一个方法,它会告诉我,如果有任何的数据存储已经可以为我的应用程序。 这是所以我知道如何处理一些本地数据做这样我就可以把它添加到数据存储或跳过它。
-(BOOL)isDatastorePresent
{
DBAccount *account = [[DBAccountManager sharedManager] linkedAccount];
DBDatastoreManager *dsm = [DBDatastoreManager managerForAccount:account];
DBError *__autoreleasing *error = NULL;
NSLog(@"Datastores: %@",[dsm listDatastores:error]); //-- Log: empty array
NSLog(@"Error: %@",error); //-- Log: (null)
NSLog(@"# datastores: %lu",(unsigned long)[[dsm listDatastores:nil] count]);
//-- Log: 0
}
我知道我有一个数据存储为我的应用程序了,但是这总是产生0数据存储 。 什么我可能是做错了任何想法?
我怀疑这里的问题是,SDK还没有完成下载你打电话之前可用数据存储的信息listDatastores
。
你要等待这个信息已经意识到了这个名单之前可用。 您可以通过在DBDatastoreManager注册一个观察者通知的变化做到这一点:
https://www.dropbox.com/developers/datastore/docs/ios#DBDatastoreManager.addObserver:block:
从smarx编辑 :
添加每格雷格的建议代码中的注释。
DBObserver dsmBlock = ^() {
NSLog(@"Datastores: %@",[dsm listDatastores:error]);
NSLog(@"Error: %@",error);
NSLog(@"#datastores: %lu",(unsigned long)[[dsm listDatastores:nil] count]);
}
[dsm addObserver:self block:dsmBlock];
[dsmBlock invoke];
这可能听起来很奇怪,但加入观察者竟然是没有必要的。 我只是拉,如图我的问题数据存储列表。
这个问题似乎是数据存储API得到了“卡壳”不知何故。 我开始做一些其他同步操作,看看数据存储浏览器进行响应,并且什么也没有发生。 再次登录了我的Dropbox帐户的(在网络上),并回后,同步启动,并出现数据存储列表开始填充出蓝色。