我正在尝试通过继承 NSNumberFormatter 在Objective C 中编写我自己的自定义格式化程序。具体来说,我想做的是让一个数字在高于或低于某些值时变为红色。苹果文档说
例如,如果您希望负财务金额以红色显示,您可以让此方法返回一个带有红色文本属性的字符串。在 attributesStringForObjectValue:withDefaultAttributes: 通过调用 stringForObjectValue: 获取非属性字符串,然后将适当的属性应用于该字符串。
基于这个建议,我实现了以下代码
- (NSAttributedString*) attributedStringForObjectValue: (id)anObject withDefaultAttributes: (NSDictionary*)attr;
{
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:[self stringForObjectValue:anObject]];
if ([[attrString string] floatValue] < -20.0f) {
[attrString addAttribute:@"NSForegroundColorAttributeName" value:[NSColor redColor] range:NSMakeRange(0, 10)];
return attrString;
} else return attrString;
}
但是当我测试这一切时,它所做的就是冻结我的应用程序。任何意见,将不胜感激。谢谢。