当我尝试像这样在 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 仍然包含我的数据的一个非常旧版本。
而我的 iPhone 在启动时由 iCloud 通知,它包含键 @"TheKey" 的良好值。
我的应用程序是通用的,所以 iCloud 的参数在两个设备上是相同的。
我将用户的二进制加密数据存储在该密钥上。这些数据用于同步所有用户设备。
我不想使用 iCloud Drive 保存文件,因为我不想让用户有可能通过使用其他应用程序或访问 www.iCloud.com 来访问该文件
在我所有的设备上,我都使用同一个 iCloud 帐户。
非常感谢您的帮助。