0

私のアプリでは、数値はポンドで表示されます。代わりにキログラムを使用するオプションを追加する必要があります。誰かがこれについて行く方法を知っていますか?CoreDataを使用して数値を保存しています。ステートメントを使用してから変換を行うことですべて手動で実行できることはわかっていますifが、もっと良い方法があるはずです。

編集 実際、私は大きな問題に遭遇したと思います。数値を変換するほど簡単ではありません。私はピッカーを使用しており、国際的な帝国のサポートを提供したいので、ピッカーは全体の実用的な数値をkgで表示する必要があります。数値をkgに換算すると、使い方がわからない10進数になります。助言がありますか?

4

4 に答える 4

5

https://github.com/davedelong/DDUnitConverter

NSNumber *weightInPounds = [NSNumber numberWithInt:42];
NSNumber *weightInKilos = [[DDUnitConverter massUnitConverter] convertNumber:weightInPounds fromUnit:DDMassUnitUSPounds toUnit:DDMassUnitKilograms];

ものすごく単純。

于 2011-06-14T20:54:49.837 に答える
1

カスタム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"];
}

カスタムフォーマッタの詳細については、「カスタムフォーマッタの作成」を参照してください。

于 2011-06-10T00:34:36.277 に答える
0

変数として単位とスケーリングを常に使用するようにコーディングすることをお勧めします。

単位とスケーリングは、「lbs」と 1.0、または「kgs」と 0.45359237 などです。

于 2011-06-09T23:36:20.800 に答える
0

これを行う方法はたくさんあります。

アプリについていくつかの仮定を立てる必要がありますが、lbs から kgs に (グローバルに) 変更するオプションが必要な場合は、おそらくアプリに設定ダイアログを表示して、ユーザーが表示するという決定を維持できるようにします。 lbs または kgs の場合、アプリの設定でこれを保持し、アプリの初期化の一部としてこの設定を使用します。次に、ポンドまたはキログラムの値を表示する場合は、ユーザー定義の設定を確認し、それに応じて値を調整する必要があります (おそらくアプリ内のラベルも同様です)。これは、コードにチェックを入れるのと同じくらい簡単です。コア日付から値を取得します

これをグローバルにアクセス可能な状態として永続化する設定を確認してください。これは、アプリ デリゲートのメンバー、設定を含むシングルトン、または単に設定を確認する必要がある場所でのリクエストである可能性があります。次に、lbs データにアクセスするコードで設定を確認し、kg に設定されている場合は計算を行い、データ アクセス コードからビューに返します。

于 2011-06-09T22:37:55.360 に答える