0

我正在尝试将字符串拆分为多个部分并插入到表格中我应该怎么做?

拆分数组时出现错误:-[__NSArrayI componentsSeparatedByString:]: unrecognized selector sent to instance 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);
}

这是我要拆分的字符串,我从 NSLog 得到的

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

请帮助我卡住谢谢。

4

2 回答 2

0

你的 NSString *AlightDesc 应该是这样的

 NSString *AlightDesc = "Block1,Block2,Block3";
 NSArray *aDescArray = [AlightDesc componentsSeparatedByString:@","];

如果你的字符串是你所说的那样

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

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

于 2012-07-23T21:10:41.613 回答
0

Objective C 不是强类型语言。您所知道的[STEPS valueForKey:@"AlightDesc"]只是它将返回一个对象(类型为id)。当你写NSString *AlightDesc = [STEPS valueForKey:@"AlightDesc"]的时候编译器没有抱怨,因为NSString *它是一个有效的对象类型。不幸的是,您的代码中存在逻辑错误,因此实际存储在密钥下的@"AlightDesc"NSArray. 正如其他人所提到的,NSArray不响应componentsSeparatedByString:因此您在运行时收到错误。

解决此问题的简单方法是更正您的逻辑:NSString首先存储 an 或将您得到的内容视为NSArray. 正如@janusfidel 提到的,您可以通过使用来获取所需条目的字符串,从而NSArray在表格中完美使用。objectAtIndex:

在一些更复杂的情况下,您可能不知道您将从字典中获取特定键的内容。在这种情况下,在 Objective 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 ...
于 2012-07-23T22:22:35.233 回答