2013-03-06 2 views
0

Я пытаюсь получить список пользователей, имена которых были выбраны из таблицы и сохранены в выбранном массиве.Поиск основных пользователей данных по имени

Что случилось с моим кодом? Извините, это мой первый раз с CoreData, поэтому я не знаю, что случилось.

NSFetchRequest *request= [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"AUser" inManagedObjectContext:_managedObjectContext]; 
for (id a in selected) { 
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"name==%@",a]; //each user has a name attribute 
    [request setEntity:entity]; 
    [request setPredicate:predicate]; 

    NSError *error = nil; 

    NSArray *array = [_managedObjectContext executeFetchRequest:request error:&error]; 
    //This array is always empty! Why? What am I doing wrong with the request 
} 

Сообщите мне, если вам требуется дополнительная информация/дополнительные разъяснения.

Другие вещи, чтобы отметить - нет признаков предупреждения/сообщения об ошибках - все переменные не объявленные здесь объявлены в другом месте

Спасибо большое!

+1

Сначала проверьте параметр 'error' на' executeFetchRequest: error: ', есть хороший шанс, что он пытается точно сказать вам, в чем проблема. –

+0

Как это сделать? Я получаю сообщение об ошибке при вызове NSLog (executeFetchRequest: ошибка); – GangstaGraham

+0

Просто зарегистрируйте сама ошибка, а не часть имени метода. 'NSLog (@" Ошибка:% @ ", ошибка);' –

ответ

3

Поскольку вы не получаете никакого ответа об ошибке, пустой массив означает, что выборка выполнена успешно, но она не нашла ничего, удовлетворяющего вашему предикату. В вашем коде, который затем подразумевает, что selected не содержит значений для name, которые можно найти в вашем хранилище данных.

Ваш код, кажется, предполагает, что selected представляет собой массив из NSString s, который соответствует значению name некоторых ваших сохраненных объектов. Если это не так - если в нем есть что-то другое, то возможно NSString-- пустого набора. Тот факт, что a объявлен как id, заставляет меня задаться вопросом, что на самом деле там.

+0

+1 хорошая точка здесь –

+0

Выбран массив строк. Я посмотрел на свою базу данных из терминала sqlite3, кажется, что мои модели правильно инициализированы, и по какой-то причине никаких объектов не создается, хотя у меня есть код, который должен это сделать. Тем не менее, вы сделали все возможное, используя код, который здесь был приведен здесь, поэтому примите себя к печенью с шоколадным чипом! – GangstaGraham

Смежные вопросы