2012-10-29 16 views
6

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

यदि मैं एक श्रेणी में सेटर के लिए एक विधि बनाता हूं, तो यह निश्चित रूप से विधि (एनएसएलओजी के साथ परीक्षण) चलाता है, लेकिन मुझे नहीं पता कि वास्तविक संपत्ति मूल्य कैसे असाइन किया जाए।

- (void)setFinished:(NSNumber *)finishedValue { 
    _finished = finishedValue; 
    self.end_time = [NSDate date]; 
} 

लेकिन जहां संपत्ति NSManagedObject में परिभाषित किया गया है: आम तौर पर, मैं संपत्ति का उपयोग कर

@synthesize finished = _finished;

ताकि मैं, _finished का उपयोग कर सेटर में संपत्ति का उपयोग कर सकते तो जैसे संश्लेषण होता यह संभव प्रतीत नहीं होता है।

+0

क्यों नहीं है ' यह संभव नहीं है? – trojanfoe

+0

आपको यह कहते हुए एक त्रुटि मिलती है कि आप किसी श्रेणी – Dan2552

+0

में संश्लेषित नहीं कर सकते हैं, यह प्रश्न का उत्तर नहीं देता है, लेकिन आपको यह कहां जाता है कि आप कहां जा रहे हैं: http://compileyouidontevenknowyou.blogspot.com/2012/06/adding -प्रॉपर्टीज-टू-क्लास-आप-डोंट.html –

उत्तर

6

आप उपवर्गीकरण साथ क्या कर सकते डॉक here

- (void)setName:(NSString *)newName 
{ 
    [self willChangeValueForKey:@"name"]; 
    [self setPrimitiveName:newName]; 
    [self didChangeValueForKey:@"name"]; 
} 
+4

'[self setPrimitiveValue: समाप्त के लिए समाप्त' : @ "समाप्त"] 'श्रेणी में काम करने लगता है, यही वह है जो मैं ढूंढ रहा था, सही दिशा में मुझे आगे बढ़ाने के लिए धन्यवाद – Dan2552

+1

ऊपर दिए गए दस्तावेज़ों के लिए लिंक टूटा हुआ है। क्या कोई इसे ठीक कर सकता है? – ishahak

1

एक श्रेणी में, आप संपत्ति मूल्य, केवल विधियां नहीं जोड़ सकते हैं। तो आप जो चाहते हैं उसे करने के लिए आपको उप-वर्ग की आवश्यकता होगी।

Model.h

@interface Model 
@property(nonatomic,copy) NSString * string; 
@end 

मॉडल + अवहेलना:

+0

आप कर सकते हैं, http://stackoverflow.com/questions/8733104/objective-c-property-instance-variable-in-category – someUser

0

एक आसान तरीका ऐसा करने के लिए नहीं है देखते हैं, निम्न प्रयास करें .एम

@interface Model() 
{ 
    NSString *_string; 
} 
@end 

@implementation Model (Override) 
- (void)setString:(NSString *)string 
{ 
    return _string = string; 
}  
@end 
संबंधित मुद्दे