0

我遵循上一个问题的答案的建议,但在运行以下代码时收到错误消息,该代码应该将 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 都被定义为相同类型的字符串,所以不明白为什么一个不能附加到另一个。任何线索任何人?

4

1 回答 1

3

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

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

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

而且 for 循环也需要更新:

for (NSString *str in myStrings) {
}
于 2013-06-12T01:46:09.213 回答