2014-07-10 20 views
5

Mantle đã chuyển đổi giá trị int 0 và 1 trong JSON thành giá trị BOOL mục tiêu-C chưa?Mantle tự động chuyển đổi 0 và 1 thành BOOL?

Tôi có một mô hình:

@interface MyModel : MTLModel 

@property (nonatomic, readonly) BOOL isValid; 

@end 

Và cho phép nói JSON là:

{ is_valid: 0 } OR { is_valid: 1 } 

Tôi muốn biết nếu Mantle sẽ tự động chuyển đổi is_valid vào giá trị Objective-C BOOL làm tôi phải explicity đề cập đến những điều sau đây:

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

Nợ nghi ngờ, cho JSON có một kiểu dữ liệu boolean. – trojanfoe

+0

Liệu nó có tự động chuyển đổi 'boolean' thành BOOL không? Tôi hầu như có thể nhận được API thay đổi. – nefarianblack

Trả lời

5

Có, điều này được xử lý cho bạn; bạn không cần sử dụng biến áp ánh xạ.

Mantle gọi nội bộ setValue:forKey: để đặt giá trị. 0 hoặc 1 sẽ là NSNumbersetValue:forKey: sẽ sử dụng boolValue trên NSNumber để nhận giá trị vì thuộc tính của bạn được khai báo là BOOL.

Hành vi này của Mã hóa khóa-giá trị được mô tả theo Scalar and Structure Support.

2

Nếu bạn cần phải chuyển đổi một chuỗi để sử dụng boolean biến này:

+ (NSValueTransformer *)sectionJSONTransformer { 
    return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:@{@"0" : @(NO), 
                      @"1" : @(YES)}]; 
} 
1
+ (NSValueTransformer *)awesomeJSONTransformer { 
    return [NSValueTransformer valueTransformerForName: MTLBooleanValueTransformerName]; 
} 
+2

Thêm một số giải thích với câu trả lời cho cách câu trả lời này giúp OP trong việc khắc phục sự cố hiện tại –

Các vấn đề liên quan