当我将用户数据(如果用户请求)同步到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中更改。 这解决了我的问题,一切正常。
答案 0 :(得分:1)
您不应该将详细信息复制到应用内的NSUserDefaults
。这就是你如何混合来自不同用户的细节。只需单独使用NSUbiquitousKeyValueStore
即可。
嗯,更现实的是,您可以复制数据,但您不应该只是在两个商店之间复制所有数据。
您应该观察NSUbiquityIdentityDidChangeNotification
和NSUbiquitousKeyValueStoreDidChangeExternallyNotification
并查看NSUbiquitousKeyValueStoreAccountChange
的原因(来自NSUbiquitousKeyValueStoreChangeReasonKey
)。当您检测到用户帐户已更改时,您需要将任何本地数据“重置”为默认值或云值(并防止在此之前更新云值)。