我已经尝试了所有的东西,并且阅读了所有的主题,但是我找不出为什么NSUbiquitousKeyValueStore没有存储在iCloud上。
·创建一个特定的应用程序ID
·启用了该应用程序ID的iCloud
·创建供应配置文件
·在项目中启用iCloud
·将权利设置为键值:$(TeamIdentifierPrefix)$(CFBundleIdentifier)
·打开设备上的iCloud驱动器
但是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总是返回零。
我正在iOS 8设备上运行,启用了iCloud。
我是不是遗漏了什么?
谢谢!
发布于 2015-03-13 18:37:38
我也有同样的问题。在设备上登录我的iCloud帐户也为我解决了这个问题。
当您在设备上安装了具有相同包标识符的应用程序时,似乎会出现此问题。在之前,您启用了iCloud权限。我在两个测试设备上遇到了这个问题。我第一次使用iCloud安装应用程序的第三个设备没有问题。
发布于 2019-04-09 17:56:14
我也遇到过同样的问题,我解决了这个问题:
而不是签入和退出iCloud。
发布于 2020-07-27 23:38:39
您似乎是在下载数据之后添加观察者。那可能是错的。
我发现,当应用程序从Xcode中删除并重新安装时,如果您尝试过快地从NSUbiquitousKeyValueStore defaultStore (例如从didFinishLaunchingWithOptions:)读取,那么您将一无所获。如果您为添加了一个观察者,那么该观察者将被调用:
[[[notification userInfo] objectForKey: NSUbiquitousKeyValueStoreChangeReasonKey] intValue] == NSUbiquitousKeyValueStoreInitialSyncChange
在那里,您可以从NSUbiquitousKeyValueStore defaultStore成功地阅读。
它的一个优点是观察者也可以对NSUbiquitousKeyValueStoreChangeReasonKey] intValue] == NSUbiquitousKeyValueStoreServerChange做出响应。
在其他设备执行[[NSUbiquitousKeyValueStore defaultStore] synchronize];后不久,该设备将得到任何其他设备所做的更改。
https://stackoverflow.com/questions/26428083
复制相似问题