首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSUbiquitousKeyValueStore不与iCloud同步

NSUbiquitousKeyValueStore不与iCloud同步
EN

Stack Overflow用户
提问于 2014-10-17 15:11:27
回答 4查看 3.4K关注 0票数 8

我已经尝试了所有的东西,并且阅读了所有的主题,但是我找不出为什么NSUbiquitousKeyValueStore没有存储在iCloud上。

·创建一个特定的应用程序ID

·启用了该应用程序ID的iCloud

·创建供应配置文件

·在项目中启用iCloud

·将权利设置为键值:$(TeamIdentifierPrefix)$(CFBundleIdentifier)

·打开设备上的iCloud驱动器

但是NSUbiquitousKeyValueStore只是在本地存钱。当我重新安装应用程序时,它不会从iCloud获得信息。

我就是这么做的:

代码语言:javascript
复制
    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是否起作用了:

代码语言:javascript
复制
    NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq) {
    NSLog(@"iCloud at %@", ubiq);

} else {
    NSLog(@"No iCloud access, %@", ubiq);
}

这总是返回“没有iCloud访问”,我不知道为什么。无论我做什么,URLForUbiquityContainerIdentifier总是返回零。

我正在iOS 8设备上运行,启用了iCloud。

我是不是遗漏了什么?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-13 18:37:38

我也有同样的问题。在设备上登录我的iCloud帐户也为我解决了这个问题。

当您在设备上安装了具有相同包标识符的应用程序时,似乎会出现此问题。在之前,您启用了iCloud权限。我在两个测试设备上遇到了这个问题。我第一次使用iCloud安装应用程序的第三个设备没有问题。

票数 7
EN

Stack Overflow用户

发布于 2019-04-09 17:56:14

我也遇到过同样的问题,我解决了这个问题:

  1. 卸载应用程序
  2. 重新启动装置
  3. 安装应用程序

而不是签入和退出iCloud。

票数 4
EN

Stack Overflow用户

发布于 2020-07-27 23:38:39

您似乎是在下载数据之后添加观察者。那可能是错的。

我发现,当应用程序从Xcode中删除并重新安装时,如果您尝试过快地从NSUbiquitousKeyValueStore defaultStore (例如从didFinishLaunchingWithOptions:)读取,那么您将一无所获。如果您为添加了一个观察者,那么该观察者将被调用:

[[[notification userInfo] objectForKey: NSUbiquitousKeyValueStoreChangeReasonKey] intValue] == NSUbiquitousKeyValueStoreInitialSyncChange

在那里,您可以从NSUbiquitousKeyValueStore defaultStore成功地阅读。

它的一个优点是观察者也可以对NSUbiquitousKeyValueStoreChangeReasonKey] intValue] == NSUbiquitousKeyValueStoreServerChange做出响应。

在其他设备执行[[NSUbiquitousKeyValueStore defaultStore] synchronize];后不久,该设备将得到任何其他设备所做的更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26428083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档