मेरे मॉडल ऑब्जेक्ट में से एक enum संपत्ति है। कोरडाटा में इसे स्टोर करने के लिए, मैंने NSNumber ऑब्जेक्ट का उपयोग किया है।CoreData के अंदर एक enum संपत्ति संग्रहीत करना और इसे सुविधाजनक बनाना
फिर भी, मैं इसे एक सुविधाजनक तरीके से एक enum प्रकार के रूप में एक्सेस करना चाहता हूं। इसे प्राप्त करने का सबसे अच्छा अभ्यास क्या है?
अभी तक, मैं निम्नलिखित कोड के साथ गया हूं।
MyObject.m@dynamic myPersistentEnum;
- (BOOL)isValidEnumValue {
if (self.myPersistentEnum) {
int intValue = [self.type intValue];
if (intValue >= ABTypeValue1 && intValue <= ABTypeValueN) {
return YES;
}
}
ELog(@"Undefined enumValue %@", self.myPersistentEnum);
return NO;
}
- (ABType)myConvenientEnum {
if ([self isValidEnumValue]) {
return [self.type intValue];
}
return ABTypeUnknown;
}
- (void)setMyConvenientEnum:(ABType)enumValue {
NSNumber *oldValue = [self.myPersistentEnum retain];
self.myPersistentEnum = [NSNumber numberWithInt:enumValue];
if ([self isValidEnumValue]) {
[oldValue release];
} else {
self.myPersistentEnum = oldValue;
[oldValue release];
}
}
मेरे सवालों में MyObject.h
typedef enum _ABType {
ABTypeUnknown,
ABTypeValue1,
...
ABTypeValueN
} ABType;
@interface MyObject : NSManagedObject
@property (nonatomic, retain) NSNumber * myPersistentEnum; // Defined in my Core Data model
@property (nonatomic) ABType myConvenientEnum;
में
हैं:
- वहाँ कुछ उपरोक्त कोड में गलत है?
int
एनएसएनंबर में एनम को परिवर्तित करते समय उपयोग करने के लिए सही प्रकार है? (NSNumber-(enum)enumValue;
विधि प्रदान नहीं करता है)- क्या आप रनटाइम कोरडाटा मॉडल सत्यापन के लिए सत्यापन पहलू छोड़ देंगे?
- [NEW] मैं अन्य डेवलपर्स के लिए स्पष्ट कैसे कर सकता हूं कि सुविधाजनक संपत्ति का उपयोग किया जाना चाहिए, न कि एनएसएनंबर संपत्ति?
कूल, मुझे यह नहीं पता था। दुर्भाग्यवश, जिन ऐप्स पर मैं काम कर रहा हूं उन्हें कम से कम कुछ महीनों के लिए आईओएस 4 का समर्थन करना है। –