Objective c 键值iCloud存储不工作

Objective c 键值iCloud存储不工作,objective-c,objective-c-blocks,icloud,Objective C,Objective C Blocks,Icloud,我正在使用KeyValue store,但它不起作用 在第一次启动期间,它将检测是否在NSUbiquitousKeyValueStore中找到密钥,否则它将创建一个新密钥并将其存储 NSUbiquitousKeyValueStore* keyStore = [NSUbiquitousKeyValueStore defaultStore]; NSDictionary* cloudDict = [keyStore dictionaryForKey: kCloudRootKey]; if (clo

我正在使用KeyValue store,但它不起作用

在第一次启动期间,它将检测是否在NSUbiquitousKeyValueStore中找到密钥,否则它将创建一个新密钥并将其存储

NSUbiquitousKeyValueStore* keyStore = [NSUbiquitousKeyValueStore defaultStore];

NSDictionary* cloudDict = [keyStore dictionaryForKey: kCloudRootKey];

if (cloudDict != nil)
{
    NSDictionary* data1 = [keyStore dictionaryForKey: kCloudData1];
    NSDictionary* data2 = [keyStore dictionaryForKey: kCloudData2];
    NSDictionary* data3 = [keyStore dictionaryForKey: kCloudData3];
    NSLog(@"iCloud loaded");
}
else
{
    [self saveToCloud];
    NSLog(@"First time creating iCloud.");
}

- (void)saveToCloud
{
        NSUbiquitousKeyValueStore* keyStore = [NSUbiquitousKeyValueStore defaultStore];

        // data1,data2,data3 are all initialized
        NSMutableDictionary* cloudDict = [[NSMutableDictionary alloc] initWithCapacity: 3];
        [cloudDict setObject: data1 forKey: kCloudData1];
        [cloudDict setObject: data2 forKey: kCloudData2];
        [cloudDict setObject: data3 forKey: kCloudData3];

        [keyStore setDictionary: cloudDict forKey: kCloudRootKey];
        [keyStore synchronize];
        [cloudDict release];
}
每当用户按下主页按钮时
-applicationidenterbackground:(UIApplication*)application
然后我会再次调用
-saveToCloud

在我第一次在iPad上发布之后,我切换到iPhone并第一次发布它,我注意到它找不到cloudDict,并陷入了创建“第一次创建iCloud”的else语句中
有人知道我应该如何解决这个问题吗?

是否检查了密钥库对象是否为零?我没有使用NSUbiquitousKeyValueStore,但是如果权限配置文件没有正确设置,它可能会返回nilyea,我已经检查过了,它不是nil。我可以建议您检查同步是否成功吗?如果([keyStore synchronize]){NSLog(@“同步成功”);}或者{NSLog(@“同步失败”);}也要确保不存储的数据没有超过1MB限制,还要确保您的字典及其子字典只包含“NSNumber、NSString、NSDate、NSData、NSArray和NSDictionary”是的,同步成功。我相信数据不会超过1MB,因为我确实尝试使用UIDocument保存,我注意到文件大小只有5.6kb,所有子字典都包含合法的数据类型