iCloud:使用相同密钥存储的数据在每台设备上都不同

时间:2015-01-30 10:33:40

标签: objective-c icloud nsubiquitouskeyvaluestore

当我尝试在iCloud上存储数据时:

    // Update data on the iCloud
    [ iCloudStore setData:iCloudData forKey:@"TheKey" ];
    [ iCloudStore synchronize ];

当我验证iPhone上的内容时,数据已成功更改。

然后,当我在iPad上启动应用程序时:

  • iCloud通知应用程序存在更改
  • 当我尝试读取这样的值时:

    NSData * iCloudData = [ [ NSUbiquitousKeyValueStore defaultStore ] dataForKey:@"TheKey" ];
    

数据不是我以前用iPhone保存的数据! iCloud包含我的数据的旧版本。

所以,我决定从我的iPad中删除iCloud数据:

        [ [ NSUbiquitousKeyValueStore defaultStore ] setObject:[NSData data] forKey:@"TheKey" ];
        [ [ NSUbiquitousKeyValueStore defaultStore ] synchronize ];
        [ [ NSUbiquitousKeyValueStore defaultStore ] removeObjectForKey:@"TheKey" ];
        [ [ NSUbiquitousKeyValueStore defaultStore ] synchronize ];

之后,iCloud似乎是空的(上次同步后iCloud数据为零)。

但是在我的iPad上重新启动应用程序后,iCloud仍然包含一个非常旧版本的数据。

而iCloud在启动时通知我的iPhone包含密钥@“TheKey”的良好值。

我的应用程序是通用的,因此iCloud的参数在两个设备上都是相同的。

我将用户的二进制加密数据存储在该密钥上。这些数据用于同步所有用户设备。

我不想使用iCloud Drive保存文件,因为我不想让用户通过使用其他应用程序或访问www.iCloud.com来访问此文件

在我的所有设备上,我使用相同的iCloud帐户。

非常感谢你的帮助。

0 个答案:

没有答案