将提取中的单个字段选择到数组中以加载选择器



尝试将单个字段加载到数组中,然后将其加载到选择器中。我认为是在创建数组时遇到了问题。

这是我的代码:

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。主要问题是对象的比较类型错误,因为哪个应用程序正在崩溃。

最新更新