【问题标题】:How to make iCloud data sync user specific?如何使 iCloud 数据同步用户特定?
【发布时间】:2014-04-19 21:46:44
【问题描述】:

当我将用户数据(如果用户请求)同步到 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 中更改。 这解决了我的问题,一切正常。

【问题讨论】:

    标签: objective-c sync icloud nsubiquitouskeyvaluestore


    【解决方案1】:

    您不应将详细信息复制到应用程序内的NSUserDefaults。这就是您混合来自不同用户的详细信息的方式。只需单独使用NSUbiquitousKeyValueStore

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

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

    【讨论】:

    • 我使用它是因为我将数据存储在设备中 iCloud 只是一个可选择的选项。用户可以使用设置中的保存和加载按钮来保存和加载数据。有一个视图,用户可以在其中查看云和本地文件中的可用数据。所以用户可以比较它。在这里,如果我删除应用程序并切换测试用户并重新安装它,我会看到与我使用其他测试帐户创建的相同。都是混合的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多