NSNumberFormatterをサブクラス化して、ObjectiveCで独自のカスタムフォーマッターを作成しようとしています。具体的には、数値が特定の値を上回ったり下回ったりした場合に、数値を赤に変えたいと思います。アップルのドキュメントには
たとえば、負の金額を赤で表示する場合は、このメソッドで赤のテキストの属性を持つ文字列を返すようにします。attributedStringForObjectValue: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;
}
しかし、これをテストすると、アプリケーションがフリーズするだけです。何かアドバイスをいただければ幸いです。ありがとう。