我按照上一个问题的答案提供建议,但在运行以下代码时收到错误,该代码应该将5个字符串的数组连接成一个更大的字符串。
NSArray *myStrings = [text componentsSeparatedByString:@"//"];
NSMutableAttributedString *result = [[NSMutableAttributedString alloc] init];
NSAttributedString *delimiter = [[NSAttributedString alloc] initWithString:@","];
NSLog(@"The Content of myStrings is %@", myStrings);
for (NSAttributedString *str in myStrings)
{
if (result.length)
{
[result appendAttributedString:delimiter];
}
[result appendAttributedString:str];
}
NSLog的打印输出返回:
2013-06-11 20:49:55.012 strings[11789:11303] The Content of myStrings is (
"Hello ",
"my name is ",
"Giovanni ",
"and im pretty crap ",
"at ios development"
所以我知道我有一个包含5个字符串的数组。然而,在第一次运行代码时,虽然它绕过'if'循环(应该如此),但它会在'for'循环的最后一行引发错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString string]: unrecognized selector sent to instance 0x716ec60'
我无法弄清楚为什么 - str和result都被定义为相同类型的字符串,所以无法理解为什么一个不能被附加到另一个字符串。有人提出任何线索吗?
答案 0 :(得分:3)
看起来您的数组包含NSString对象。 NSAttributedString不是NSString的子类,反之亦然。它们都继承自NSObject。
在追加之前,尝试使用方法initWithString创建NSAttributedString的实例,并将str作为参数传递。
NSAttributedString *attributedString = [NSAttributedString initWithString:str];
[result appendAttributedString:attributedString];
还需要更新for循环:
for (NSString *str in myStrings) {
}