尝试将单个字段加载到数组中,然后将其加载到选择器中。我认为是在创建数组时遇到了问题。
这是我的代码:
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的无法识别的选择器"
任何帮助都将不胜感激。。。
我的猜测是,假设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;
}
请浏览NSManaged Object的文档-http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html
然后正确地获取数据并将其传递给Picker。主要问题是对象的比较类型错误,因为哪个应用程序正在崩溃。