Objective c 拆分nsstring并放入tableview

Objective c 拆分nsstring并放入tableview,objective-c,uitableview,nsarray,xcode4.3,Objective C,Uitableview,Nsarray,Xcode4.3,我正在尝试将字符串拆分为多个部分并插入到一个表中,我应该如何操作 我在拆分数组时遇到一个错误,它是:-[\uu NSArrayI componentsSeparatedByString:]:无法识别的选择器发送到实例0x7a421e0 NSArray *BusRoute = alightDesc; int i; int count = [BusRoute count]; for (i = 0; i < count; i++) { NSDictionary *dic = [Bus

我正在尝试将字符串拆分为多个部分并插入到一个表中,我应该如何操作

我在拆分数组时遇到一个错误,它是:-[\uu NSArrayI componentsSeparatedByString:]:无法识别的选择器发送到实例0x7a421e0

NSArray *BusRoute = alightDesc;
int i;
int count = [BusRoute count];
for (i = 0; i < count; i++)
{  
    NSDictionary *dic = [BusRoute objectAtIndex: i];
    NSDictionary *STEPS = [dic valueForKey:@"STEPS"];            
    NSString *AlightDesc = [STEPS valueForKey:@"AlightDesc"];
    NSLog(@"AlightDesc = %@", AlightDesc);

    NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","];
    NSLog(@"aDescArray = %@", aDescArray);
}

请帮助我,我卡住了,谢谢。

您的NSString*AlightDesc应该是这样的

 NSString *AlightDesc = "Block1,Block2,Block3";
 NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","];
如果你的字符串是你所说的

 AlightDesc = ("Block1","Block2","Block3"); 

那么字符串就是问题所在,因为它已经被分解了。

Objective C不是强类型语言。关于
[STEPS valueForKey:@“AlightDesc”]
您可以确定的是,它将返回一个对象(类型为
id
)。编写
NSString*AlightDesc=[STEPS valueForKey:@“AlightDesc”]
时,编译器没有抱怨,因为
NSString*
是有效的对象类型。不幸的是,您的代码中存在逻辑错误,因此实际上存储在键
@“AlightDesc”
下的是
NSArray
。正如其他人提到的,
NSArray
不响应
由字符串分隔的组件:
,因此在运行时会出现错误

解决这个问题的简单方法是纠正您的逻辑:首先存储一个
NSString
,或者将您得到的内容作为
NSArray
。正如@janusfiel所提到的,通过使用
objectAtIndex:
获取所需条目的字符串,您可以在表中很好地使用
NSArray

在一些更复杂的情况下,您可能不知道对于特定的键,您将从字典中得到什么。在这种情况下,在目标C中,您可以询问对象:

id anObject = [STEPS valueForKey:@"AlightDesc"];
if ([anObject isKindOfClass:[NSString class]]) {
    NSString *aString = (NSString *)anObject;
    // Treat as a string ...
} else if ([anObject isKindOfClass:[NSString class]]) {
    // Object is an array ...

您的
AlightDesc
包含数组,它是一个数组。不是绳子。这就是它抛出异常的原因阅读您的问题时,您不需要分割数据,您只需将它们显示在表中
[AlightDesc objectAtIndex:indexath.row]
以及,
NSArray*AlightDesc=[STEPS valueForKey:@“AlightDesc”]而不是
NSString
id anObject = [STEPS valueForKey:@"AlightDesc"];
if ([anObject isKindOfClass:[NSString class]]) {
    NSString *aString = (NSString *)anObject;
    // Treat as a string ...
} else if ([anObject isKindOfClass:[NSString class]]) {
    // Object is an array ...