カスタムNSFormatterを使用して、数値を文字列に変換して表示することをお勧めします。データを任意の形式で表示する機能を提供しながら、常に1つの形式でデータを保存します。フォーマッターに使用するフォーマットを指示するには、簡単な設定(NSUserDefaultsを介して保存)が必要になります。これのいくつかの利点は、数字を表示しているときにこれに対処するだけでよいことです。数値を文字列に変換して表示する必要があるため、コードに変更を加えることはほとんどありません。また、設定はアプリの設定に保存されるため、コアデータストアを変更する必要はありません。NSNumberFormatterをサブクラス化して、変換後の数値を自動的にフォーマットすることもできます。実装例は次のとおりです。
- (NSString *)stringForObjectValue:(NSNumber *)number {
double val = [number doubleValue];
BOOL isKGs = [[NSUserDefaults standardUserDefaults] boolForKey:@"wantsKGs"];
if(isKGs) val *= 0.45359237;
NSString *str = [super stringForObjectValue:[NSNumber numberWithDouble:val]];
if(isKGs) return [str stringByAppendingString:@" kg"];
return [str stringByAppendingString:@" lbs"];
}
カスタムフォーマッタの詳細については、「カスタムフォーマッタの作成」を参照してください。