Objective c 拆分nsstring并放入tableview
我正在尝试将字符串拆分为多个部分并插入到一个表中,我应该如何操作 我在拆分数组时遇到一个错误,它是:-[\uu NSArrayI componentsSeparatedByString:]:无法识别的选择器发送到实例0x7a421e0Objective 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
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 ...