ios - CloudKit:获取具有特定记录类型的所有记录?

标签 ios icloud cloudkit ckrecord

我目前已经在我的应用程序中设置了 CloudKit,因此我可以借助下面的代码添加一条新记录,

CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:@"stringArray"];
CKRecord *record = [[CKRecord alloc] initWithRecordType:@"Strings" recordID:recordID];
[record setObject:[NSArray arrayWithObjects:@"one", @"two", @"three", @"four", nil] forKey:@"stringArray"];
[_privateDatabase saveRecord:record completionHandler:nil];

但是,现在我希望能够获取具有相同记录类型“字符串”的所有记录,并将那些编译成 NSArray 的记录返回。我该怎么做呢?目前,我所想的是如何使用 recordID 单独获取每条记录,这很麻烦,必须有更简单的方法。

[_privateDatabase fetchRecordWithID:recordID completionHandler:^(CKRecord *record, NSError *error) {
   if (error) {
      // Error handling for failed fetch from private database
   }
   else {
      NSLog(@"ICLOUD TEST: %@", [record objectForKey:@"stringArray"]);            
  }
}];

最佳答案

啊啊啊,我明白了。使用下面的代码,我能够创建一个在数据库上运行的查询,然后在我循环遍历的完成 block 中返回一个 NSArray,并返回 NSLog 中保存的键的值。

NSPredicate *predicate = [NSPredicate predicateWithValue:YES];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Strings" predicate:predicate];

[_privateDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
    for (CKRecord *record in results) {
        NSLog(@"Contents: %@", [record objectForKey:@"stringArray"]);
    }
}];

关于ios - CloudKit:获取具有特定记录类型的所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28402846/

相关文章:

ios - 现有项目的 XCTest

ios - 仅使用 NSUbiquitousKeyValueStore 时,如何以编程方式检测用户设备上是否启用了 iCloud?

ios - 如何让 watchkit 扩展应用程序和我的 iphone 应用程序共享相同的 icloud 数据库

ios - 每个 iCloud 用户如何在 CloudKit 中保存用户特定的订阅?

ios - Core Data + CloudKit 无法在其他设备上自动刷新?

ios - 试图在 iphone 上生成随机数,得到相同的数字

ios - Facebook 登录显示两次

ios - 无法声明对泛型类的引用

ios8 - 如何在 iCloud Drive 中创建文档?

ios - 核心数据 - iCloud 行为