इस परीक्षण कोर डाटा परियोजना में, मैं "ग्राहक" के लिए "उत्पाद" से कई रिश्ते के लिए एक है और इस रिश्ते 'उत्पाद' नाम दिया है। ग्राहक के गुण 'नाम' है और उत्पाद की विशेषता 'आइटम' है। मैं संस्थाओं subclassed है और Xcode ग्राहक के लिए निम्नलिखित का उत्पादन किया गया:का उपयोग कैसे करें कोर डेटा के जोड़ने और (NSSet) एक्सेसर तरीकों निकालना चाहते हैं?
@interface Customer : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *products;
@end
@interface Customer (CoreDataGeneratedAccessors)
- (void)addProductsObject:(Products *)value;
- (void)removeProductsObject:(Products *)value;
- (void)addProducts:(NSSet *)values;
- (void)removeProducts:(NSSet *)values;
@end
को जोड़ने के लिए, मान लें कि, एक ग्राहक (जॉन डो) और दो आइटम (विजेट 1 & विजेट 2), मैं एक्सेसर उपयोग कर सकते हैं विधि addProductsObject रूप इस प्रकार है:
...
// Add (1) customer object
Customer *custObj = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[custObj setValue:@"John Doe" forKey:@"name"];
// Add (2) products for John Doe
for (int foo=0; foo<2; foo++) {
self.product = [NSEntityDescription insertNewObjectForEntityForName:@"Products" inManagedObjectContext:context];
NSString *objString = [NSString stringWithFormat:@"Widget %d", foo];
self.product.item = objString;
[custObj addProductsObject:self.product];
}
...
यह ठीक काम करता है लेकिन, यदि संभव हो तो, मैं addProducts एसी का उपयोग करने के लिए करना चाहते हैं cessor।
मैं यह सोचते हैं रहा है कि एक्सेसर उत्पन्न विधि addProducts है की तरह कुछ के साथ एक वस्तुओं के 'सेट' की प्रविष्टि की सुविधा के लिए:
...
NSSet *itemSet = [[NSSet alloc] initWithObjects:@"Widget 1", @"Widget 2", nil];
[custObj addProducts:itemSet];
...
लेकिन यह विफल रहता है। इस कोशिश में, मैं समझता हूँ कि एक उत्पाद वस्तु को स्पष्ट रूप से नहीं बनाया गया है और, जैसे, एक स्पष्ट उत्पाद काम जगह नहीं लिया है लेकिन मैंने सोचा, शायद, एक्सेसर कि का ख्याल रखना होगा।
क्या है, इसलिए, addProducts का सही उपयोग है, और उस बात के लिए, removeProducts?
धन्यवाद।