Ios UISegmentedControl核心数据绑定错误

Ios UISegmentedControl核心数据绑定错误,ios,core-data,Ios,Core Data,当我尝试将nsobject绑定到段控件时,总是会出现此错误 UserLocation isEqualToString:]: unrecognized selector sent to instance 0x7477a60 2013-01-22 12:44:58.115 Momentum[39936:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UserLoca

当我尝试将nsobject绑定到段控件时,总是会出现此错误

UserLocation isEqualToString:]: unrecognized selector sent to instance 0x7477a60
2013-01-22 12:44:58.115 Momentum[39936:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UserLocation isEqualToString:]: unrecognized selector sent to instance 0x7477a60'
我已验证我的核心数据对象是否有数据

NSarray *arrayuserlocation = [[MMIStore defaultStore] loadAllUserLocation];
UISegmentedControl *segControl = [[UISegmentedControl alloc]initWithItems:arrayuserlocation];
[segControl addTarget:self action:@selector(didChangeSegmentControl:)      forControlEvents:UIControlEventValueChanged];
[segControl setSegmentedControlStyle:UISegmentedControlStyleBar];
[segControl setTintColor:[UIColor grayColor]];
编辑

回答下面的问题

- (NSMutableArray *)loadAllUserLocation
{
    if (!allItems) {NSFetchRequest *request = [[NSFetchRequest alloc] init];

    NSEntityDescription *e = [[model entitiesByName] objectForKey:@"UserLocation"];
            [request setEntity:e]
    NSError *error;
        NSArray *result = [context executeFetchRequest:request error:&error];
        if (!result) {
            [NSException raise:@"Fetch failed"
                        format:@"Reason: %@", [error localizedDescription]];
        }

        allItems = [[NSMutableArray alloc] initWithArray:result];
}
 return allItems;
它返回一个数组

我能通过做以下事情来解决我的问题

 NSArray *arraylocation = [[MMIStore defaultStore] loadAllUserLocation];
    NSMutableArray *newarray = [[NSMutableArray alloc] init];
    for (UserLocation *user in arraylocation)
    {

        NSLog(@"%@ found", user.locationNm);
        [newarray addObject:user.locationNm];

    }

并使用newarray作为段控制的数据源。

问题是,
arrayuserlocation
数组应该包含
NSString
s,而不是
NSManagedObjects
问题是,
arrayuserlocation
数组应该包含
NSString
s,而不是
NSManagedObjects
引发异常的代码希望您向其传递一个
NSString
(这是响应
IsequalString:
的对象)。但是,您正在向它传递一个
UserLocation
对象。您需要从
UserLocation
对象加载
arrayuserlocation
字符串,而不仅仅是发送一个对象数组本身。

引发异常的代码希望您传递一个
NSString
(这是响应
IsequalString:
的对象)。但是,您正在向它传递一个
UserLocation
对象。您需要使用
UserLocation
对象中的字符串加载
arrayuserlocation
,而不仅仅是发送对象本身的数组。

正如我在评论中提到的,问题是您传递的是
UserLocation
对象,而不是所需的
NSString
UIImage
对象

根据规则,您的项目数组应该是“NSString对象数组(用于段标题)或UIImage对象数组(用于段图像)”

您需要从用户位置获取字符串,如下所示:

NSarray *arrayuserlocation = [[[MMIStore defaultStore] loadAllUserLocation] valueForKey:@"locationNm"];//use the param name here

这将为您提供一个对象数组中所有字符串的数组。

正如我在评论中提到的,问题是您传递的是
userlocation
对象,而不是
NSString
UIImage
所需的对象

根据规则,您的项目数组应该是“NSString对象数组(用于段标题)或UIImage对象数组(用于段图像)”

您需要从用户位置获取字符串,如下所示:

NSarray *arrayuserlocation = [[[MMIStore defaultStore] loadAllUserLocation] valueForKey:@"locationNm"];//use the param name here

这将为您提供一个对象数组中所有字符串的数组。

NSarray arrayuserlocation
应该是
NSarray*arrayuserlocation
,对吗?而
loadAllUserLocation
中有什么?它似乎不是一个字符串。这就是它崩溃的原因。userlocation中有一个int属性。这就是问题所在吗?根据您的条目数组应该是“NSString对象数组(用于段标题)或UIImage对象数组(用于段图像)”因此,您可以添加显示其返回类型的完整的
loadAllUserLocation
方法吗?您可以告诉
userlocation
的哪个参数要显示为
UISegmentedControl
标题吗?
NSarray arrayuserlocation
应该是
NSarray*arrayuserlocation
,对吗?而
loadAllUserLocation
中有什么?它似乎不是一个字符串。这就是它崩溃的原因。userlocation中有一个int属性。这就是问题所在吗?根据您的条目数组应该是“NSString对象数组(用于段标题)或UIImage对象数组(用于段图像)”因此,您可以添加显示其返回类型的完整
loadAllUserLocation
方法吗?您可以告诉
userlocation
的哪个参数要显示为
UISegmentedControl
标题吗?啊,我该怎么做?它有一个int和string属性:)啊,我该怎么做?它有一个int和string属性:)您好,非常感谢您的洞察力。我应该删除这个问题吗?@KevinKohler,谢谢你接受。你不必做编辑中提到的所有事情。就用上面这一行。它应该可以工作。你不必删除它。编辑后,这不是一个坏问题,应该可以帮助其他面临类似问题的人。您好,非常感谢您的见解。我应该删除这个问题吗?@KevinKohler,谢谢你接受。你不必做编辑中提到的所有事情。就用上面这一行。它应该可以工作。你不必删除它。在编辑之后,这不是一个坏问题,应该可以帮助其他面临类似问题的人。