objective-c - 使用 recordName 获取单个记录,它应该从 icloud 返回特定字段

标签 objective-c cloudkit

我想使用 cloudkit 从 icloud 获取单个记录。

这是我正在使用的代码:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordName contains %@",recordId];                                       
NSLog(@"predicate------%@",predicate);
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"AmuzItems" predicate:predicate];
CKQueryOperation *queryOperation = [[CKQueryOperation alloc] initWithQuery:query];
queryOperation.database = publicDatabase;
queryOperation.resultsLimit =1 ;
queryOperation.desiredKeys = @[@"name",@"city",@"state"];
queryOperation.recordFetchedBlock = ^(CKRecord * record) {
        NSLog(@"record------%@",record);
};
queryOperation.queryCompletionBlock = ^(CKQueryCursor * cursor, NSError * operationError) {
    if (operationError) {                                                                                              NSLog(@"error--------%@",operationError);                                                                                                                                            
 } else
    {
        NSLog(@"cursor------%@",cursor);
    }
};

只想检索名称、城市、州字段。 RecordType中有15个字段。code不返回任何内容,甚至没有错误。

最佳答案

对于那些像我一样面临同样问题的人:

CKDatabase *publicDatabase = [[CKContainer defaultContainer] publicCloudDatabase];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"recordID == %@",[[CKRecordID alloc]initWithRecordName:recordId]];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"RecordTypeName" predicate:predicate];
CKQueryOperation *queryOperation = [[CKQueryOperation alloc] initWithQuery:query];
NSOperationQueue * operationQueue = [[NSOperationQueue alloc] init];
queryOperation.database = publicDatabase;
queryOperation.resultsLimit =1 ;
queryOperation.desiredKeys = @[@"name",@"city",@"state"];
queryOperation.recordFetchedBlock = ^(CKRecord * record) {
 NSLog(@"record------%@",record);
};
queryOperation.queryCompletionBlock = ^(CKQueryCursor * cursor, NSError * error) {
    if (error) {
          NSLog(@"error--------%@",error);            
    } else
    {
        if (cursor) {
            NSLog(@"cursor-------%@",cursor);
        }
        else
        {
                NSLog(@"end");
        }
    }
};
 [operationQueue addOperation:queryOperation];

关于objective-c - 使用 recordName 获取单个记录,它应该从 icloud 返回特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413056/

相关文章:

flutter - 无需登录即可跨设备云数据存储(iCloud、CloudKit)

ios - 更新 CloudKit 记录,得到 "UITextField.text must be used from main thread only"

ios - 我们可以为 Cloudkit JS 创建一个 API token ,无需身份验证即可访问共享数据吗

c# - 在 C#/.NET 中从 Apple/Objective-C 读取持久化数据

objective-c - 即使我在 shouldAutorotate 上返回 NO, View 也会被旋转

ios - 如何在iOS中将mp4文件存储为Data或NSData对象?

ios - 注释不会加载到 map 上

objective-c - EventKit:提醒 dueDateComponents 与 Alarm

ios - 如何维护/清理本地化字符串

ios - PDFKit : How to move current page in PDFView to a specific offset