附加NSAttributedStrings会返回错误

时间:2013-06-11 19:56:18

标签: ios objective-c nsattributedstring

我按照上一个问题的答案提供建议,但在运行以下代码时收到错误,该代码应该将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都被定义为相同类型的字符串,所以无法理解为什么一个不能被附加到另一个字符串。有人提出任何线索吗?

1 个答案:

答案 0 :(得分:3)

看起来您的数组包含NSString对象。 NSAttributedString不是NSString的子类,反之亦然。它们都继承自NSObject。

在追加之前,尝试使用方法initWithString创建NSAttributedString的实例,并将str作为参数传递。

NSAttributedString *attributedString = [NSAttributedString initWithString:str];
[result appendAttributedString:attributedString];

还需要更新for循环:

for (NSString *str in myStrings) {
}