0

当我将用户数据(如果用户请求)同步到 iCloud(使用NSUbiquitousKeyValueStore)时,它会正确同步。但是,当我使用 2 个不同的设备和 2 个不同的 Apple ID 时,我在两者上都看到了相同的数据,并且我仍然能够在它们之间进行同步。因此,多个用户可以看到彼此的数据。

有什么方法可以使同步用户具体化,还是我在某处犯了错误?

我使用的一些代码:

NSUbiquitousKeyValueStore *icloudatas = [NSUbiquitousKeyValueStore defaultStore];

//save to iCloud
[icloudatas setString:[NSString stringWithFormat:@"%i",
[defaults integerForKey:@"lvl"]] forKey:@"lvl"];


//load from iCloud
[defaults setInteger:[[icloudatas stringForKey:@"lvl"] integerValue] forKey:@"lvl"];

[defaults syncronise];
[icloudatas synchronize];

问题已解决:

我刚刚在 App Store 中更改了我的 Apple ID,我忘记在 iCloud 中进行更改。这解决了我的问题,一切正常。

4

1 回答 1

1

您不应该将详细信息复制到NSUserDefaults应用程序内部。这就是您混合来自不同用户的详细信息的方式。NSUbiquitousKeyValueStore自己用就行了。

好吧,更实际的是,您可以复制数据,但您不应该总是在两个存储之间复制所有数据。

您应该观察NSUbiquityIdentityDidChangeNotificationNSUbiquitousKeyValueStoreDidChangeExternallyNotification检查NSUbiquitousKeyValueStoreAccountChange(from NSUbiquitousKeyValueStoreChangeReasonKey) 的原因。当您检测到用户帐户已更改时,您需要将任何本地数据“重置”为默认值或云值(并在此之前阻止对云值的任何更新)。

于 2014-03-14T14:39:18.717 回答