2014-07-22 1 views
4

현재 사용자가 작성한 모든 레코드를 조회하려고합니다. 현재 사용자의 CKRecordID를 성공적으로 가져올 수 있지만 올바르게 쿼리 할 수 ​​없습니다. 아래는 내가 사용하고있는 코드입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?CloudKit에서 사용자별로 쿼리하는 방법?

[[CKContainer defaultContainer] fetchUserRecordIDWithCompletionHandler:^(CKRecordID *recordID, NSError *error) { 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"creatorUserRecordID = %@", recordID]; 
    CKQuery *query = [[CKQuery alloc] initWithRecordType:@"MyEntity" predicate: predicate]; 
    [database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) { 
      //results are empty  
     }]; 
}]; 

그런데 데이터베이스에 여러 개의 "MyEntity"레코드가 생성되었습니다.

답변

3

CloudKit 대시 보드에서 레코드 유형을보고 '메타 데이터 색인 필드'드롭 다운을 열면 검색 가능한 항목이 하나도없는 것을 볼 수 있습니다. 어제까지 그들은 그렇습니다.

[NSSortDescriptor(key: "creationDate", ascending: false)] 

나는이 곧 해결 될 것입니다 임시 CloudKit 문제입니다 희망 : 내가 사용 이상에서 CreationDate에 정렬 할 수 있기 때문에 오늘 아침 나는이났습니다. 그렇지 않으면이 필드를 직접 추가하여 대안을 만들어야합니다. 이 외에도 0 레코드 대신 CloudKit 오류가 발생합니다.

업데이트 : 필드를 정렬 및 쿼리 가능하도록 다시 설정할 수 있다는 사실을 알게되었습니다. 방금 해봤는데 효과가 있습니다. 데모에 creatorUserRecordID에 대한 쿼리를 추가했습니다. 이것은 설정되어 있기 때문에 새로운 레코드 만 반환된다는 것입니다. 오래된 기록은 나타나지 않습니다. 데모를 보려면 다음을 확인하십시오. https://github.com/evermeer/EVCloudKitDao