首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS - NSUbiquitousKeyValueStore不“实际上”同步

iOS - NSUbiquitousKeyValueStore不“实际上”同步
EN

Stack Overflow用户
提问于 2012-08-04 05:00:50
回答 1查看 3.2K关注 0票数 3

我正在使用NSUbiquitousKeyValueStore来同步我的应用程序首选项,我正在使用iPhone 3GS和iPhone 4两种设备测试同步过程。

当我在一个设备(例如iPhone 3GS)中更改首选项时,它使用以下代码将首选项同步到NSUbiquitousKeyValueStore

代码语言:javascript
复制
NSUbiquitousKeyValueStore *keyStore = [NSUbiquitousKeyValueStore defaultStore];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    [keyStore setObject:[userDefaults objectForKey:S_KEY_UI_SOUNDS]
                 forKey:S_KEY_UI_SOUNDS];

if ([keyStore synchronize]) {
    NSLog(@"TO ICLOUD - UI SOUNDS %@", [keyStore objectForKey:S_KEY_UI_SOUNDS]);
}

然而,出现了两个问题:

First:虽然注册了NSUbiquitousKeyValueStoreDidChangeExternallyNotification,但我从来没有在iPhone 4上收到过。因此,如果iPhone 4是活动的,而iPhone 3GS更改了一个偏好,那么iPhone 4就会不知道它。

第二步:当开始从NSUbiquitousKeyValueStore同步首选项时,它永远不会使用iPhone 3GS获得新的首选项集(参见下面的代码)。这是尽管成功地与NSUbiquitousKeyValueStore同步(同步方法返回是)。

代码语言:javascript
复制
NSUbiquitousKeyValueStore *keyStore = [NSUbiquitousKeyValueStore defaultStore];
if ([userDefaults synchronize]) {
    NSLog(@"FROM - UI SOUNDS %@", [keyStore objectForKey:S_KEY_UI_SOUNDS]);
}

有解决办法吗?或者我做错什么了?

EN

回答 1

Stack Overflow用户

发布于 2012-08-04 05:21:37

首先,-synchronize不是关于“与iCloud服务器同步”。它是关于同步您的更改和磁盘上的本地存储。一旦它在磁盘上,底层引擎就会在它认为合适的时候(通常是在~3s之后)将您的更改推到云端。

其次,您应该订阅商店更改通知。

简而言之,在使用NSUbiquitousKeyValueStore时首先要做的事情是:

代码语言:javascript
复制
store = [NSUbiquitousKeyValueStore defaultStore];
// subscribe immediately to any change that might happen to the store
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(storeDidChangeExternally:) name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification object:store];

// get any changes since the last app launch right now (safer)
[store synchronize];

最后,与云的同步发生在“适当的时间”(目前您无法控制它)。

为了给您一个想法,一旦您将内存中的更改“同步”到磁盘,引擎通常会“很快”开始与云同步,并推动您的更改。

然后,服务器将向其他设备推送通知,其他设备也将安排与云的同步。

在正常情况下,设备需要7s才能同步。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11806034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档