Как получить все имя RecordType в частной базе данных CloudKit
Я хотел бы знать, как я могу получить массив со всеми именами типов записей в моей частной базе данных в 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 ответ
В CloudKit нет функции, которая будет возвращать все доступные recordType из базы данных. Вы также не можете одновременно запрашивать несколько типов записей. Вы должны выполнить 2 запроса. Что вы можете сделать, так это объединить полученные массивы вместе, если вам нужно что-то подобное.
Поскольку объекты одинаковы, было бы лучше, если бы вы просто использовали 1 recordType и добавили дополнительное поле, которое указывало бы ваш пользовательский тип (Favoris1 или Favoris2). Затем вы могли бы запросить только recordType и посмотреть в возвращаемом поле, какой пользовательский тип это является.