全体の流れ
1.接続中のユーザーのRecordIDを取得する
2.そのRecordIDを使ってクエリーを書く
3.クエリーを実行する
このまま書くとRecordIDが取得できる前に2が実行されてしまう。
1の部分はアプリ起動時等に先にやっておくのが良いと思う。
//接続中のユーザーのRecordIDを取得する
CKContainer*container=[CKContainer defaultContainer];
[container fetchUserRecordIDWithCompletionHandler:^(CKRecordID * recordID, NSError * error) {
if(error==nil){
NSLog(@”user fetch done”);
self.userID=recordID;
}];
//そのRecordIDを使ってクエリーを書く
NSPredicate*predicate=[NSPredicate predicateWithFormat:@”creatorUserRecordID = %@”,[[CKReference alloc] initWithRecordID:recordID action:CKReferenceActionNone]];
CKQuery*query=[[CKQuery alloc]initWithRecordType:@”TargetRecords” predicate:predicate];
//クエリーを実行する
CKDatabase*publicDB=[CKContainer defaultContainer]publicCloudDatabase];
[publicDB performQuery:query inZoneWithID:nil completionHandler:^(NSArray*results,NSError*error){
if(results.count>0){
NSLog(@”userRecord fetch %lu”,(unsigned long)results.count);
};
}];