Выбор одного поля в выборке в массив для загрузки средства выбора - PullRequest
0 голосов
/ 21 января 2012

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

Это мой код:

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'

Буду признателен за любую помощь ...

Ответы [ 2 ]

1 голос
/ 22 января 2012

Я предполагаю, что вы предполагаете, что объекты в вашем массиве 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;
}
0 голосов
/ 22 января 2012

Пожалуйста, ознакомьтесь с документацией NSManaged Object- http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html

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

...