2009-12-18 8 views
12

मैं अपने मूल डेटा मॉडल में से एक पर स्ट्रिंग प्रॉपर्टी पर गेटर को ओवरराइड करने में सक्षम होना चाहता हूं और गेटटर के अंदर मुझे यह पता लगाना चाहिए कि उस संपत्ति के लिए मूल्य क्या है।कोर डेटा का उपयोग करते समय मैं संपत्ति पर एक गेटर को ओवरराइड कैसे कर सकता हूं?

@interface LabTest : NSManagedObject { 
} 
@property (nonatomic, retain) NSString *status; 
@end 

@implementation LabTest 

@dynamic status; 

- (NSString *)status { 
    NSString *tempStatus = [super valueForKey:@"status"]; 
    //do some checking here 
    return tempStatus; 
} 

@end 

उपरोक्त कोड प्रक्रिया को क्रैश करता है। मैंने कुछ अलग-अलग चीजों की कोशिश की है, लेकिन मुझे लगता है कि वे सभी 13 9 के कोड के साथ क्रैश होने वाले प्रोग्राम के साथ एक अनंत लूप में समाप्त हो जाते हैं।

इस तरह के गेटर में कोर डेटा सदस्य तक पहुंचने का सही तरीका क्या है?

उत्तर

24

क्या आपने [super valueForkey:@"status"] के बजाय [self primitiveValueForKey:@"status"] को आजमाया है?

+0

वही है जो मैं ढूंढ रहा था। धन्यवाद! –

+1

विचित्र कैसे यह एक आदिम नहीं है ... –

1

एक्स-कोड में प्रबंधित ऑब्जेक्ट निर्माता में एक चेकबॉक्स होता है जो सामान्य रूप से इस उद्देश्य के लिए अनचेक किया जाता है।

Validation Methods http://www.nwcode.com/img/ValidationMethods.png

+0

मैं काफी सत्यापन नहीं कर रहा हूं, क्योंकि मैं अभी भी एक मूल्य वापस करना चाहता हूं, मैं बस कुछ मामलों में इसे थोड़ा बदलना चाहता हूं। धन्यवाद। –

2

बस मामले में किसी को भी कैसे गेटर तरीकों ओवरराइड करने के लिए पर कुछ और जानकारी की तलाश में है और इस पृष्ठ पर उतरा है ...

अपनी संपत्ति परिभाषा आप मनुष्य और सेटर तरीके निर्दिष्ट कर सकते हैं के अंदर निम्नानुसार है:

@property (nonatomic, retain, getter = getterMethodName, setter = setterMethodName) NSString *someString; 

आप केवल गेटर, केवल सेटर, या दोनों निर्दिष्ट कर सकते हैं।

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

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