पर NSManagedObjectModel में संबंध जोड़ना जब आप कोरडाटा का उपयोग करते हुए एक स्थिर लाइब्रेरी लिखते हैं तो परियोजना में सामान्य .xdatamodeld फ़ाइल सहित एक बड़ी गड़बड़ी होती है क्योंकि आप बस अपने बाध्यकारी संस्करण (.momd) को अपनी बाइनरी में लिंक नहीं कर सकते हैं, तो यह इस तरह पूरे NSManagedObjectModel
कोड में बनाने के लिए बेहतर है:प्रोग्रामिंग रूप से बनाए गए NSEntityDescription
NSAttributeDescription *dateAttribute = NSAttributeDescription.new;
dateAttribute.name = @"timestamp";
dateAttribute.attributeType = NSDoubleAttributeType;
dateAttribute.optional = NO;
dateAttribute.indexed = YES;
NSAttributeDescription *payloadAttribute = NSAttributeDescription.new;
payloadAttribute.name = @"payload";
payloadAttribute.attributeType = NSBinaryDataAttributeType;
payloadAttribute.optional = NO;
payloadAttribute.indexed = NO;
NSEntityDescription *entry = NSEntityDescription.new;
entry.name = entry.managedObjectClassName = NSStringFromClass(MyCustomEntry.class);
entry.properties = @[dateAttribute, payloadAttribute];
NSManagedObjectModel *mom = NSManagedObjectModel.new;
mom.entities = @[entry];
और सब कुछ एकदम सही है ....
लेकिन! रुको, अगर मेरे पास NSManagedObjectModel
में एक से अधिक इकाइयां हैं और वे संबंधित हैं (कई, उलटा, और इसी तरह), दुनिया में मैं उन्हें कोड में कैसे जोड़ूंगा, उदाहरण के लिए, उदाहरण के लिए, उस अच्छे एक्सकोड संपादक के बिना , जहां आप कई माउस क्लिक के साथ संबंध बनाते हैं?
उदाहरण
कल्पना कीजिए, हम एक वर्ग MyCustomElement उपरोक्त कोड से MyCustomEntry में के रूप में लगभग एक ही है। अब, here're उनके इंटरफेस अगर मैं संस्थाओं के लिए Xcode पीढ़ी के लिए इस्तेमाल किया है कि वे कैसे दिखेगी:
@interface MyCustomEntry : NSManagedObject
@property (nonatomic, retain) NSNumber *timestamp;
@property (nonatomic, retain) NSData *payload;
@property (nonatomic, retain) MyCustomElement *element;
@end
@interface MyCustomElement : NSManagedObject
@property (nonatomic, retain) NSNumber * timestamp;
@property (nonatomic, retain) NSString * identifier;
@property (nonatomic, retain) NSSet *entries;
@end
@interface MyCustomElement (CoreDataGeneratedAccessors)
- (void)addEntriesObject:(MyCustomEntry *)value;
- (void)removeEntriesObject:(MyCustomEntry *)value;
- (void)addEntries:(NSSet *)values;
- (void)removeEntries:(NSSet *)values;
@end
क्या NSRelationshipDescription मैं उनके लिए बनाने की जरूरत है और यह कैसे init के लिए?
कृपया, उदाहरण के साथ अद्यतन प्रश्न की जांच करें। – shoumikhin
@shoumikhin: मैंने अपने उत्तर में नमूना कोड जोड़ा है। –
बहुत बढ़िया, धन्यवाद! – shoumikhin