2014-04-14 10 views
6
@interface Entity() 
    @property (assign) int searchTotalPagesAll; 
    @property (assign) int searchTotalPagesIdeas; 
@end 


@implementation Entity 
    + (NSDictionary *)JSONKeyPathsByPropertyKey { 
return @{ 
     @"Id": @"entity.id_entity", 
     @"name": @"entity.name", 
     @"coverage" : @"entity.coverage", 
     @"id_city": @"entity.Id_City", 
     @"cityName":@"entity.city", 
     @"countryName":@"entity.country", 
     @"stateName":@"entity.district", 
     @"countryCode": @"entity.countrycode", 
     @"keyword1": @"entity.key1", 
     ... etc 

में डिफ़ॉल्ट मान सेट करने के लिए विरासत उदाहरण के बाद से एक init विधि नहीं है, मैं उन गुणों (searchTotalPagesAll, searchTotalPagesIdeas) मूलभूत मूल्यों के लिए जहां से प्रारंभ करना चाहिए? इस मॉडल में आंतरिक विधियां हैं जिनके लिए इसकी आवश्यकता है और कई अन्य गुण हैं।कैसे आईओएस मेंटल मॉडल उपवर्ग

उत्तर

12

चाहे आप जेएसओएन से एक मैटल मॉडल बनाते हैं या अन्यथा, मॉडल [-initWithDictionary:error:] के साथ शुरू किया गया है। अपनी मॉडल कक्षा में, आप मॉडल को आरंभ करने के लिए उपयोग किए गए मानों में अपने डिफ़ॉल्ट जोड़ सकते हैं:

- (instancetype)initWithDictionary:(NSDictionary *)dictionaryValue error:(NSError *__autoreleasing *)error { 
    NSDictionary *defaults = @{ 
     @"searchTotalPagesAll" : @(10), 
     @"searchTotalPagesIdeas" : @(5) 
    }; 
    dictionaryValue = [defaults mtl_dictionaryByAddingEntriesFromDictionary:dictionaryValue]; 
    return [super initWithDictionary:dictionaryValue error:error]; 
} 
+0

अगर मैं इस तरह से प्रारंभ: [[MyMantleModelClass alloc] init] यह ट्रिगर नहीं करेगा [-initWithDictionary: त्रुटि:]। मैं पूर्व आरंभकर्ता को एक दूसरे को फोन किए बिना बाद में कॉल करने के लिए कैसे मजबूर कर सकता हूं? धन्यवाद। – Donald

+0

यदि आप 'initWithDictionary' का उपयोग नहीं कर रहे हैं तो आप केवल' init' में संपत्ति मान सेट कर सकते हैं। –

7

आप इनिट विधि में डिफ़ॉल्ट मान सेट कर सकते हैं।

- (instancetype)init 
{ 
    self = [super init]; 
    if (self) { 
     self.searchTotalPagesAll = 1; 
     self.searchTotalPagesIdeas = 2; 
    } 
    return self; 
} 
+1

समझ में आता है, और स्वीकार किए गए उत्तर में दृष्टिकोण से सरल है। – ZeMoon

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