- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在我的应用程序中启用 iCloud 以保存一些首选项。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];
} else {
NSString *result = [cloudStore stringForKey:@"testString"];
NSLog(@"Found something in iCloud - here it is: %@", result);
}
我的问题是数据只保存在本地(比如NSUserDefaults)。当我删除设备中的应用程序时,保存的数据无法恢复。在其他设备中,显然,数据也无法恢复。
第一次保存数据。接下来,如果我再次打开该应用程序,则 else 代码可以很好地检索数据。但是当我删除应用程序并再次运行时,数据没有保存。
似乎数据没有保存在 iCloud 上,只保存在本地。
在我的项目中唯一“奇怪”的是项目名称与包名称不同。
更新:
我的问题只出现在 iOS6 中。在 iOS7 中一切正常。当我在带有 iOs 6 的设备中调试我的应用程序时,在“调试导航器”中 iCloud 部分显示:
配置 iCloud 的所有步骤似乎都正常(对于配备 iOs7 的设备工作正常)并且如果我使用以下代码测试它工作正常:
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
if (ubiq) {
NSLog(@"iCloud at %@", ubiq);
} else {
NSLog(@"No iCloud access");
}
怎么了?
谢谢!
最佳答案
您正在尝试从尚未下载的 iCloud 检索数据。下载操作需要一些时间,您应该注册 NSUbiquitousKeyValueStoreDidChangeExternallyNotification 以便能够从 iCloud 访问新数据。这是一个示例代码:
- (void) registerForiCloudNotificatons
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleChangesFromiCloud:)
name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification
object:[NSUbiquitousKeyValueStore defaultStore]];
}
- (void) handleChangesFromiCloud: (NSNotification *) notification
{
NSDictionary * userInfo = [notification userInfo];
NSInteger reason = [[userInfo objectForKey:NSUbiquitousKeyValueStoreChangeReasonKey] integerValue];
// 4 reasons:
switch (reason) {
case NSUbiquitousKeyValueStoreServerChange:
// Updated values
break;
case NSUbiquitousKeyValueStoreInitialSyncChange:
// First launch
break;
case NSUbiquitousKeyValueStoreQuotaViolationChange:
// No free space
break;
case NSUbiquitousKeyValueStoreAccountChange:
// iCloud accound changed
break;
default:
break;
}
NSArray * keys = [userInfo objectForKey:NSUbiquitousKeyValueStoreChangedKeysKey];
for (NSString * key in keys)
{
NSLog(@"Value for key %@ changed", key);
}
}
关于ios - iCloud:NSUbiquitousKeyValueStore 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22117306/
我已经设置了应用程序组并且正在使用 NSUserDefaults initWith suiteName为了允许我的应用程序和我的扩展程序访问同一组首选项。我现在想用一个可以通过 iCloud 同步这些
对于 iOS 应用程序,我正在研究如何通过 iCloud 同步用户数据。由于数据量很小,我目前想到的是使用iCloud的键值存储(NSUbiquitousKeyValueStore)。 我有几个关于
我正在尝试将一些数据从 iCloud 迁移出去,所以我想我只需将 key 保存在新位置后就将其删除,然后如果该值不再存在,我就会知道该值是否不再需要迁移iCloud。 NSUbiquitousKeyV
我在使用 NSUbiquitousKeyValueStore 以及让它在两个设备之间可靠地同步时遇到了麻烦。它开始让我发疯。疯了。 我看到我的代码调用了: [[NSUbiquitousKeyValue
我遇到了一个似乎很独特的问题。我的 NSUbiquitousKeyValueStore 在模拟器中的启动之间根本不起作用。也就是说,我什至不是在谈论 iCloud 同步或类似的东西,我无法让它通过下面
我正在使用 NSUbiquitousKeyValueStore 在 iCloud 中存储用户首选项。为确保我了解 NSUbiquitousKeyValueStore 的工作原理,我成功地存储了一个 S
我正在编写一些代码来保存用户首选项。 enum CustomSettingsEnum: NSNumber { case Off case On } let someKey = "SOM
我正在尝试使用 NSUbiquitousKeyValueStore 类来使用 iCloud 键值。但是当我尝试通过指定的键获取值时,出现错误 [ valueForUndefinedKey:]: thi
背景故事:对于使用 Catalyst 制作的 Mac 应用程序,推送通知目前存在错误。这意味着如果同步引擎是 CloudKit 或 NSUbiquitousKeyValueStore,则不会接收在其他
我正在我的应用程序中启用 iCloud 以保存一些首选项。iCloud 在功能部分启用,我的配置文件已更新: 我保存和检索测试示例的代码如下: NSUbiquitousKeyValueStore *c
我正在使用 NSUbiquitousKeyValueStore 在 iCloud 上存储用户数据字典( gem 、用户名等)。 gem 可以在应用程序中作为消耗性 IAP 购买,然后用户拥有的 gem
NSUbiquitousKeyValueStore 的最大大小是多少? 我见过相互矛盾的报告,例如 current iOS documentation says 1mb : 但是,如果您在 Googl
来自 Apple's NSUbiquitousKeyValueStore documentation : If you write to the key-value store object when
我了解到 NSUbiquitousKeyValueStore 始终可用,在 no iCloud account 时也是如此已成立。这让我相信我可以安全地将基本数据存储在其中,而无需在 NSUserDe
文档并不清楚如何在边缘情况下使用 NSUbiquitousKeyValueStore。 如果我想设置一个值,我知道我应该为 NSUserDefaults 和 NSUbiquitousKeyValueS
我正在使用 NSUbiquitousKeyValueStore 来同步我的应用程序首选项,我正在使用两台设备 iPhone 3GS 和 iPhone 4 测试同步过程。 当我更改一台设备(比如 iPh
我已经尝试了所有方法并阅读了所有主题,但我无法找出为什么 NSUbiquitousKeyValueStore 没有存储在 iCloud 上。 • 创建了特定的 App ID • 为这个 App ID
我有一个配置为使用 iCloud 的应用程序。我正在向 NSUbiquitousKeyValueStore 添加一个键/值,我可以在我的所有设备上按预期检索它。但是,如果我从“设置”下删除我的应用程序
在我的 watchOS 2 应用程序中使用 NSUbiquitousKeyValueStore 时出现此错误: NSUbiquitousKeyValueStore is unavailable
所以我只是想让我的无处不在的关键数据发挥作用。不幸的是我也无法做到!我就是无法让它通过 iCloud 执行任何操作! Here是一个项目文件,其中有一个带有三个按钮的简单 Storyboard。目标是
我是一名优秀的程序员,十分优秀!