Objective c 键值iCloud存储不工作
我正在使用KeyValue store,但它不起作用 在第一次启动期间,它将检测是否在NSUbiquitousKeyValueStore中找到密钥,否则它将创建一个新密钥并将其存储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
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,所有子字典都包含合法的数据类型