5

Mantle は既に JSON の int 値 0 と 1 を Objective-C BOOL 値に変換していますか?

私はモデルを持っています:

@interface MyModel : MTLModel

@property (nonatomic, readonly) BOOL isValid;

@end

そして、JSON は次のようになります。

{ is_valid: 0 } OR { is_valid: 1 }

is_validMantle が自動的に Objective-C の BOOL 値に変換されるかどうかを知りたいのですが、次のことを明示的に言及する必要があります。

+ (NSValueTransformer)isValidJSONTransfermer {
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@(0) : @(NO),
                                                                           @(1) : @(YES)}];
}
4

3 に答える 3

6

はい、これはあなたに代わって処理されます。マッピング トランスフォーマーを使用する必要はありません。

MantlesetValue:forKey:は値を設定するために内部的に呼び出します。プロパティが として宣言されているため、0 または 1 は になりNSNumber、onをsetValue:forKey:使用して値を取得します。boolValueNSNumberBOOL

Key-Value コーディングのこの動作については、「スカラーと構造体のサポート」で説明されています。

于 2014-07-10T12:53:39.770 に答える
2

文字列をブール値に変換する必要がある場合は、次のトランスフォーマーを使用します。

+ (NSValueTransformer *)sectionJSONTransformer {
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@"0" : @(NO),
                                                                           @"1" : @(YES)}];
}
于 2016-04-21T15:26:01.347 に答える
1
+ (NSValueTransformer *)awesomeJSONTransformer {
    return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName];
}
于 2016-05-16T08:33:12.530 に答える