Скорее всего, вы ошиблись в базовых данных. Базовые данные не являются базой данных. Это граф объектов, который сохраняется в базе данных. Сказав это, ваш вопрос лучше задать как «как я могу загрузить все экземпляры объекта« Событие »и получить доступ к его свойству термина».
Для этого вы хотите создать и выполнить NSFetchRequest
для объекта «Событие» без предиката.
NSManagedObjectContext *moc = ...;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Event" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *events = [moc executeFetchRequest:request error:&error];
NSAssert2(events != nil && error == nil, @"Error fetching events: %@\n%@", [error localizedDescription], [error userInfo]);
Отсюда вы можете использовать KVC для получения массива свойства name:
NSArray *namesArray = [events valueForKey:@"name"];
Что приведет к массиву с заполненной только этой строкой.
Однако, лучший вопрос: зачем вам массив, если вы отображаете все в таблице? У NSFetchedResultsController
уже есть все сущности 'Event', найденные для вас; это только дисплей, который привязан к таблице. Какова ваша цель?
Обновление
Большое спасибо за подробный ответ, мистер Маркус ... Моя цель - найти определенный "термин" из основных данных, используя панель поиска. Есть ли лучший способ для этого?
Да, есть, и есть много решений этой проблемы. Вы можете получить доступ ко всем результатам из существующего NSFetchedResultsController
, используя его свойство -fetchedObjects
. Оттуда вы можете получить отфильтрованный массив, применив NSPredicate
к этому массиву, используя -filteredArrayUsingPredicate:
, и затем вы сможете использовать этот массив в результатах поиска.
Если вы выполните поиск в SO для Core Data и UISearchDisplayController
, я подозреваю, что вы найдете много результатов и предложений.