2014-07-10 5 views
5

क्या मैंटल जेएसओएन में int मान 0 और 1 को पहले से ही उद्देश्य-सी बूल मानों में परिवर्तित करता है?मैटल 0 और 1 को स्वचालित रूप से परिवर्तित करें?

मैं एक मॉडल है:

@interface MyModel : MTLModel 

@property (nonatomic, readonly) BOOL isValid; 

@end 

और कहते हैं कि सुविधा देता है JSON है:

{ is_valid: 0 } OR { is_valid: 1 } 

मुझे पता है कि अगर मेंटल स्वचालित रूप से ऑब्जेक्टिव-सी बूल मान में is_valid परिवर्तित मैं करने के लिए है करने के लिए होगा चाहते हैं स्पष्टीकरण निम्नलिखित का उल्लेख करता है:

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

संदिग्ध, JSON दिया एक बूलियन डेटा प्रकार है। – trojanfoe

+0

क्या यह स्वचालित रूप से 'बुलियन' को BOOL में परिवर्तित करता है? मैं शायद एपीआई बदल सकता है। – nefarianblack

उत्तर

5

हां, यह आपके लिए संभाला जाता है; आपको मैपिंग ट्रांसफॉर्मर का उपयोग करने की आवश्यकता नहीं है।

मैटल आंतरिक रूप से मूल्य निर्धारित करने के लिए setValue:forKey: पर कॉल करता है। 0 या 1 NSNumber होगा, और पर NSNumber पर एक मूल्य प्राप्त करने के लिए उपयोग करेगा, क्योंकि आपकी संपत्ति BOOL के रूप में घोषित की गई है।

कुंजी-मूल्य कोडिंग का यह व्यवहार Scalar and Structure Support के अंतर्गत वर्णित है।

2

आप बूलियन उपयोग करने के लिए इस ट्रांसफार्मर एक स्ट्रिंग परिवर्तित करने के लिए की जरूरत है:

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

इस मुद्दे के जवाब के साथ कुछ स्पष्टीकरण जोड़ें कि इस मुद्दे को वर्तमान समस्या को ठीक करने में ओपी की मदद कैसे करें –

संबंधित मुद्दे