我已经尝试了一切并阅读了所有相关话题,但我无法找出为什么NSUbiquitousKeyValueStore没有存储在iCloud上的原因。
• 创建了特定的App ID
• 为该App ID启用了iCloud
• 创建了配置文件
• 在项目中启用了iCloud
• 将entitlements设置为键值:$(TeamIdentifierPrefix)$(CFBundleIdentifier)
• 在设备上开启了iCloud Drive
但是NSUbiquitousKeyValueStore只保存在本地。当我重新安装应用程序时,它不会从iCloud获取信息。
这是我的尝试方式:
NSUbiquitousKeyValueStore *cloudStore = [NSUbiquitousKeyValueStore defaultStore];
if ([[cloudStore stringForKey:@"testString"] length] == 0) {
NSLog(@"Nothing in iCloud - setting a value...");
[cloudStore setString:@"I'm live in iCloud!" forKey:@"testString"];
[cloudStore synchronize];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];
} else {
NSString *result = [cloudStore stringForKey:@"testString"];
NSLog(@"Found something in iCloud - here it is: %@", result);
}
[self registerForiCloudNotificatons];
如果我删除了应用程序或尝试在新设备上使用它,它就无法在iCloud上找到任何内容。
因此,我尝试了以下方法来查看iCloud是否正常工作:
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq) {
NSLog(@"iCloud at %@", ubiq);
} else {
NSLog(@"No iCloud access, %@", ubiq);
}
这个函数总是返回“没有iCloud访问权限”,我无法弄清楚原因。无论我做什么,URLForUbiquityContainerIdentifier始终返回nil。
我在启用iCloud的iOS 8设备上运行。
我有什么遗漏吗?
谢谢!