更改不同范围的字体时,NSMutableAttributedString崩溃

时间:2013-07-02 23:45:10

标签: ios objective-c string nsstring

所以我正在尝试更改NSMutableAttributedString的颜色,但是当我尝试添加多个范围时,我一直遇到一个超出范围的异常错误(见下文)。另一方面,如果我只做0到totalLength-1的单一范围,则没有问题。我不知道为什么会这样。

我的代码如下:

NSString *testString = @"This is my test string for this example";   

NSMutableAttributedString *attribString = [[NSMutableAttributedString alloc]     initWithString:testString];
int totalLength = [playerTurnString length];


[playerTurnString addAttribute:NSForegroundColorAttributeName
                         value:[UIColor redColor] range:NSMakeRange(0, 11)];
[playerTurnString addAttribute:NSForegroundColorAttributeName
                         value:[UIColor blueColor] range:NSMakeRange(12, totalLength-1)];

1 个答案:

答案 0 :(得分:3)

NSRange是一个位置和长度,所以当你这样做时

  

NSMakeRange(12,totalLength-1)

您的长度太长,因此超出了字符串的范围。您正尝试将其用作起点和终点位置,但这不是它的工作原理。