2014-09-25 2 views
13

문서에 사용자가 적절한 iCloud 계정으로 로그인하지 않아도 CloudKit 공용 데이터베이스를 읽을 수 있다고 나와 있습니다. 그러나 iOS 시뮬레이터 나 장치를 iCloud에 연결하지 않으면 클라우드 데이터베이스에서 아무 것도 가져올 수 없습니다. iCloud 계정을 활성화하면 공개 데이터베이스에서 데이터를 가져올 수 있습니다. 대답이 있거나 나와 같은 문제가있는 사람이 대답 할 수 있다면 좋을 것입니다. 감사.CloudKit 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

은 컨테이너 연결 운영 체제입니까? 나는 보통 [CKContainer defaultContainer]를 사용합니다. –

+0

데이터가 다른 컨테이너에 저장되어 있기 때문에 다른 컨테이너를 사용하고 있습니다. iCloud 계정없이 액세스 할 수 있도록 연결 설정을 변경하려면 어떻게해야합니까? 도와 주셔서 감사합니다. –

+0

로그인하지 않고'fetchRecordWithID' 메소드를 수행하는 것이 문제가되지 않아야합니다.'containerWithIdentifier'가 리턴하는 것은 무엇입니까? –

답변

3

설명서가 잘못되었거나 Apple 코드에 버그가있는 것 같습니다. 레이더 파일을 보내야합니다 https://developer.apple.com/bug-reporting/

+0

그래, 나는 똑같은 생각하고있어. 나는 여러 번이 책을 통해 모든 것을 시도해 봤지만 나는 성공하지 못하고있다. – Acey

+0

그 생각은 이전에 입력 한 것입니다. 이미 버그 보고서를 열었습니다. 고마워,하지만 이건 대답이 아니라 단지 의견을 바꿔주세요. –

+0

@ JanderXlav 신고 한 경우 공개 레이더 링크를 공유하십시오. –

6

공용 데이터베이스는 개발 환경이 아닌 프로덕션 환경에서만 로그인 할 수 있습니다.

애플의 문서는 말한다 :

개발에

, 당신이 시뮬레이터 또는 장치에 Xcode를 통해 응용 프로그램을 실행할 때, 당신은 공용 데이터베이스에서 레코드를 읽을 iCloud에 자격 증명을 입력해야합니다. 프로덕션 환경에서 기본 권한을 사용하면 인증되지 않은 사용자가 공용 데이터베이스의 레코드를 읽을 수 있지만 레코드를 쓸 수는 없습니다.

CloudKit Quick Start을 참조하십시오.