カスタム書式の作成
NSFormatter のカスタムサブクラスを作成して、日付と数値以外のデータ表現を書式設定できます。
NSFormatter をサブクラス化するには、少なくともこれらのメソッドを オーバーライド しなければなりません。
- stringForObjectValue:
- getObjectValue:forString:errorDescription:
最初のメソッドでは、セルのオブジェクトを文字列表現に変換します。2 番目のメソッドでは、文字列をセルに関連したオブジェクトに変換します。
また、attributedStringForObjectValue:withDefaultAttributes: をオーバーライドして、オブジェクトをそれに関連した属性を持つ文字列に変換することもできます。たとえば、負の金額を赤で表示する場合は、このメソッドで属性が赤文字の文字列を返します。stringForObjectValue: を呼び出して、 attributedStringForObjectValue:withDefaultAttributes: で属性のない文字列を取得し、その文字列に適切な属性を適用します。
編集する文字列と表示する文字列が必ず異なる場合 (たとえば、通貨フィールドの表示バージョンにはドル記号が表示されますが、編集バージョンには表示されません) 、stringForObjectValue: に加えて editingStringForObjectValue: を実装して下さい
OS X では、各キーを押すたびにセルのテキストコンテンツを編集し、isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:
errorDescription: および isPartialStringValid:newEditingString:errorDescription: を使用して、ユーザーが無効な文字を入力するのを防ぐことができます。社会保障番号のようなものにこの動的編集を適用することができます。データを入力する人は、書式が区切り文字を自動的に挿入するため、一度だけ番号を入力するだけですみます。
前の章 次の章