我正在创建一个属性字符串并有条件地应用删除线。这是代码:
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;
}
因此字典的描述被附加到属性字符串。知道为什么吗?
答案 0 :(得分:1)
这就是description
NSAttributedString
方法的实现方式。它旨在帮助您进行调试,以便您可以在(纯文本)控制台中检查字符串的属性。实际的字符串只是大括号之前的部分(“Belinda”)。要仅打印字符串而不使用任何属性,您可以记录attString.string
。