如何在私有数据库CloudKit中获取RecordType的所有名称

时间:2015-02-05 09:32:09

标签: ios8 icloud cloudkit ckquery ckrecord

我想知道如何在Cloud Kit中的私有数据库中获取包含所有记录类型名称的数组,以便读取我的所有数据?

我保存了我的数据:

CKRecord* fav1 = [[CKRecord alloc] initWithRecordType:@"Favoris1"];

[fav1 setObject:@"Favoris 1 name"forKey:@"name"];
[fav1 setObject:@"2003 year"forKey:@"year"];

[self.privateDatabase saveRecord:fav1
               completionHandler:^(CKRecord *savedState, NSError *error) {
                   if (error) {
                       NSLog(@"ERROR SAVING: %@", error);

                   }
                   else{
                       NSLog(@"SAVE OK");
                   }
               }];

我读了我的数据:

CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Favoris1" predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
[self.privateDatabase performQuery:query
                      inZoneWithID:nil
                 completionHandler:^(NSArray *results, NSError *error)
 {
     if (!error)
     {
         NSLog(@"results query %@", results);
         NSLog(@"--> %@",[[results objectAtIndex:0] objectForKey:@"name"]);
         NSLog(@"--> %@",[[results objectAtIndex:0] objectForKey:@"year"]);
     }

     else
     {
         NSLog(@"FETCH ERROR: %@", error);
     }
 }];

我想用另一个属性保存另一条记录,如:

CKRecord* fav2 = [[CKRecord alloc] initWithRecordType:@"Favoris2"];
[fav2 setObject:@"Favoris 2 name"forKey:@"name"];
[fav2 setObject:@"2005 year"forKey:@"year"];

如何保存一个包含Favoris1和Favoris2的数组,以便在我保存后读取所有记录?

1 个答案:

答案 0 :(得分:0)

在CloudKit中,没有任何函数可以从数据库中返回所有可用的recordType。您也不能同时查询多个记录类型。您必须执行2个查询。如果你需要这样的东西,你可以做的就是将结果数组加在一起。

由于对象是相同的,如果你只使用1个recordType并添加一个额外的字段来指定你的自定义类型(Favoris1或Favoris2)会更好然后你只能查询recordType并在返回的字段中看到什么自定义类型。