在文档中,即使用户没有使用正确的iCloud帐户登录,也可以读取CloudKit公共数据库。但是,如果我没有将我的iOS模拟器或设备连接到iCloud,我无法从我的云数据库中获取任何内容。当我激活我的iCloud帐户时,我可以从我的公共数据库中获取数据。如果有人对我有答案或同样的问题可以回答那会很好。感谢。
CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:@"mycontainer"] publicCloudDatabase];
CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:@"idofmyrecord"] ;
[publicDatabase fetchRecordWithID:recordID completionHandler:^(CKRecord *fetchedRecord, NSError *error) {
if(!error){
NSLog(@"****Success***** %@",fetchedRecord[@"field1"]);
}else{
NSLog(@"****Failed***** %@",fetchedRecord[@"field2"]);
}
}];
答案 0 :(得分:7)
公共数据库只能在生产环境中进行登录,而不能在开发环境中登录。
Apple的文档说:
在开发中,当您在模拟器或设备上通过Xcode运行应用程序时,您需要输入iCloud凭据以读取公共数据库中的记录。在生产中,默认权限允许未经过身份验证的用户读取公共数据库中的记录,但不允许他们写入记录。
答案 1 :(得分:3)
我认为文档不正确或者这是Apple代码中的错误。你应该在https://developer.apple.com/bug-reporting/
提交雷达