如何使iCloud数据同步用户特定?

时间:2014-03-14 14:25:35

标签: objective-c sync icloud nsubiquitouskeyvaluestore

当我将用户数据(如果用户请求)同步到iCloud时(使用NSUbiquitousKeyValueStore), 它正确同步。但是,当我使用2个不同的设备,使用2个不同的苹果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中更改。 这解决了我的问题,一切正常。

1 个答案:

答案 0 :(得分:1)

您不应该将详细信息复制到应用内的NSUserDefaults。这就是你如何混合来自不同用户的细节。只需单独使用NSUbiquitousKeyValueStore即可。

嗯,更现实的是,您可以复制数据,但您不应该只是在两个商店之间复制所有数据。

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