CloudKitのデータベースで接続中のユーザーアカウントで作ったレコードを取得する

全体の流れ
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);
    };
}];

コメントを残す

%d人のブロガーが「いいね」をつけました。