Чтение открытой базы данных CloudKit без входа в iCloud
В документах говорится, что общедоступные базы данных CloudKit будут доступны для чтения, даже если пользователь не входил в систему с соответствующей учетной записью iCloud. Однако я не могу извлечь ничего из моей облачной базы данных, если я не подключил мой 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"]);
}
}];
Ответы
Ответ 1
Публичная база данных доступна только для чтения без входа в производственную среду, а не в среду разработки.
В документации Apple говорится:
В разработке, когда вы запускаете приложение через Xcode на симуляторе или устройстве, вам нужно ввести учетные данные iCloud для чтения записей в общедоступной базе данных. В производстве разрешения по умолчанию позволяют пользователям, не прошедшим проверку подлинности, считывать записи в общедоступной базе данных, но не позволяют им записывать записи.
См. Быстрый запуск CloudKit.
Ответ 2
Я думаю, что документация неверна или это ошибка в коде Apple. Вы должны подать радар в https://developer.apple.com/bug-reporting/