2012-01-21 2 views
0

пытается загрузить одно поле в массив и затем загрузить его в сборщике. Я думаю, что в создании массива у меня проблема.Выбор одного поля в выборке в массив для загрузки сборщика

Это мой код:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:entityDescr]; 
[request setPropertiesToFetch:[NSArray arrayWithObject:@"name"]]; 

NSError *error; 
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error]; 
self.pickerData = array; 

Ошибка я получаю это:

Нагрузочного приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: «- [NSManagedObject isEqualToString]: непризнанный селектор направлен например 0x7bb8100'

Любая помощь будет оценена ...

+0

кажется, вопрос в сборщика делегат, вы можете сравнивать неправильные объекты, может у поста код подборщика делегата, а также. – rishi

+0

все, что я делаю после последней строки, которую вы видите, – user1161756

+0

[vPicker reloadAllComponents]; Я убедился, что он работает без данных из таблицы NSArray * array = [[NSArray alloc] initWithObjects: @ "data", @ "data 1", @ "data 2", nil]; то прокомментировал эту часть: – user1161756

ответ

0

Перейди через документацию NSManaged object- http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html

Затем извлечь данные правильно и перейти к Picker. Основная проблема - неправильное сравнение объектов, из-за которых приложение терпит крах.

1

Я предполагаю, что вы принимаете объекты в вашем массиве pickerData: NSString экземпляров, когда на самом деле это NSManagedObject экземпляров. Для того, чтобы получить значение поля имени, вы должны сделать следующее:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 

    NSManagedObject *managedObject = [self.pickerData objectAtIndex:row]; 
    NSString *name = [managedObject valueForKey:@"name"]; 

    return name; 
}