0

我正在创建一个属性字符串并有条件地应用删除线。这是代码:

    NSMutableDictionary *attributes = [[NSMutableDictionary alloc] init];
    if (needsStrikeThrough) {
        [attributes setValue:[NSNumber numberWithInt:NSUnderlineStyleSingle] forKey:NSStrikethroughStyleAttributeName];
    } else {
        [attributes setValue:[NSNumber numberWithInt:NSUnderlineStyleNone] forKey:NSStrikethroughStyleAttributeName];
    }
    NSAttributedString *attString = [[NSAttributedString alloc] initWithString:participant.firstName attributes:attributes];
    NSLog(@"attString= %@", attString);
    NSLog(@"[attributes description]= %@", [attributes description]);

控制台中的输出是这样的:

attributedParticipantName= Belinda{
    NSStrikethrough = 0;
 }
[attributes description]= {
    NSStrikethrough = 0;
}

所以字典的描述被附加到属性字符串中。知道为什么吗?

4

1 回答 1

1

这就是description方法的NSAttributedString实现方式。它旨在帮助您进行调试,以便您可以在(纯文本)控制台中检查字符串的属性。实际的字符串只是花括号(“Belinda”)之前的部分。要仅打印字符串,不带任何属性,您可以记录attString.string.

于 2013-03-23T11:58:27.853 回答