在這個測試Core Data項目中,我有從「客戶」到「產品」的一對多關係,這種關係被命名爲'產品'。客戶的屬性是'名稱',產品的屬性是'項目'。我子類的實體和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節&的Widget 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?
謝謝。