я в настоящее время получил CloudKit установить в моем приложении, так что я добавляю новую запись с помощью помощью следующего кода ниже,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"]);
}
}];
Согласно CKQuery API Reference: «Предикаты основаны на строку формата. Вы не можете использовать предикаты, основанные на значении или на основе блоков. " Я не думаю, что это всегда было так, но в настоящее время ни один ответ не будет правильным, потому что они используют 'NSPredicate (value:)' –
@JamesLingo Пробовали ли вы это? это предположение? 'NSPredicate (value: true)' полностью отлично –
Я использовал его в прошлом, но каждый, кто это делает, должен знать, что он не поддерживается CloudKit, согласно собственной документации Apple. Apple может очень хорошо внести изменения, которые нарушили бы этот код, и это можно сделать w/out с использованием предикатов, основанных на значении или блоке. –