Trong dự án Core Data thử nghiệm này, tôi có mối quan hệ một đến nhiều từ "Khách hàng" đến "Sản phẩm" và mối quan hệ này được đặt tên là 'sản phẩm'. Thuộc tính của khách hàng là 'name' và thuộc tính của sản phẩm là 'item'. Tôi đã subclassed các thực thể và Xcode đã sản xuất sau đây cho khách hàng:Làm thế nào để sử dụng các phương pháp bổ trợ thêm và loại bỏ dữ liệu cốt lõi (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
Để thêm, giả sử, một khách hàng (John Doe) và hai mặt hàng (Widget 1 & Widget 2), tôi có thể sử dụng accessor phương pháp addProductsObject như sau:
...
// 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];
}
...
này hoạt động tốt, nhưng nếu có thể, tôi muốn tận dụng các addProducts ac cessor.
Tôi giả định rằng tạo accessor phương pháp addProducts ở đó để thuận tiện cho việc chèn của một 'đặt' của các đối tượng với cái gì đó như:
...
NSSet *itemSet = [[NSSet alloc] initWithObjects:@"Widget 1", @"Widget 2", nil];
[custObj addProducts:itemSet];
...
nhưng điều này thất bại. Trong thử nghiệm này, tôi hiểu một đối tượng sản phẩm đã không được tạo ra một cách rõ ràng và, như vậy, việc phân công sản phẩm rõ ràng đã không diễn ra nhưng tôi nghĩ, có lẽ, người truy cập sẽ quan tâm đến điều đó.
Do đó, việc sử dụng chính xác thêmSản phẩm là gì và trong trường hợp này, xóaSản phẩm?
Cảm ơn.