Ios 核心数据将对象添加到多个关系中
我正在尝试实现核心数据与两个实体的多个关系-衣柜列表和项目。 衣柜列表与多个“物品”之间有一个对多关系,因此可以向衣柜添加多个物品 我已经创建了NSManagedObject子类。下面是它们的样子 衣柜清单Ios 核心数据将对象添加到多个关系中,ios,core-data,one-to-many,Ios,Core Data,One To Many,我正在尝试实现核心数据与两个实体的多个关系-衣柜列表和项目。 衣柜列表与多个“物品”之间有一个对多关系,因此可以向衣柜添加多个物品 我已经创建了NSManagedObject子类。下面是它们的样子 衣柜清单 @class Item; @interface WardrobeList : NSManagedObject @property (nonatomic, retain) NSString * name; @property (nonatomic, retain) BabyDetails
@class Item;
@interface WardrobeList : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) BabyDetails *babydetails;
@property (nonatomic, retain) NSSet *items;
@end
@interface WardrobeList (CoreDataGeneratedAccessors)
- (void)addItemObject:(Item *)value;
- (void)removeItemObject:(Item *)value;
- (void)addItem:(NSSet *)values;
- (void)removeItem:(NSSet *)values;
@end
项目.h
@class WardrobeList;
@interface Item : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSString * brand;
@property (nonatomic, retain) NSString * color;
@property (nonatomic, retain) NSString * age;
@property (nonatomic, retain) NSDate * buydate;
@property (nonatomic, retain) NSNumber * quantity;
@property (nonatomic, retain) NSNumber * price;
@property (nonatomic, retain) NSData * image;
@property (nonatomic, retain) NSString * desc;
@property (nonatomic, retain) NSString * giftby;
@property (nonatomic, retain) NSString * category;
@property (nonatomic, retain) NSString * product;
@property (nonatomic, retain) WardrobeList *wardrobe;
@end
我有一个名为WardrobeList的表视图控制器,在其中显示衣柜列表。我在这里有一个Add按钮,它将我带到Add Item视图控制器,用户在其中填充项目的详细信息
我将选定的衣柜对象通过一个序列。这是代码
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"AddItem"]) {
//Assign managed objects to dest view controller
AddItemViewController *destViewController = segue.destinationViewController;
destViewController.wardrobe = wardrobe;
} else if ([[segue identifier] isEqualToString:@"ShowItems"]) {
ItemsList *destViewController = segue.destinationViewController;
destViewController.wardrobe = wardrobe;
}
}
在AddItemVC.m中,我捕获了用户输入的所有详细信息,并将它们添加到一个新的项目管理对象中。然后,我尝试将这个物品对象添加到我从segue收到的衣柜中,使用我的save按钮方法
- (IBAction)save:(id)sender {
NSManagedObjectContext *context = [self managedObjectContext];
// Create a new item object
Item *newItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:context];
if (!product) {
newItem.category = category;
product = [products objectAtIndex:[self.pickerView selectedRowInComponent:1]];
newItem.product = product;
}
//Saving the text fields
newItem.name = self.itemTextField.text;
newItem.brand = self.brandTextField.text;
newItem.age = self.ageTextField.text;
newItem.color = self.colorTextField.text;
newItem.quantity = @([self.quantityTextField.text intValue]);
newItem.price = @([self.priceTextField.text floatValue]);
//Save date
newItem.buydate = self.datePicker.date;
//Save image
newItem.image = imageData;
//Save description
newItem.desc = self.descTextField.text;
//Save the gift field values
if (self.giftTextField.text) {
newItem.giftby = self.giftTextField.text;
}
//Manage the relation between wardrobe and item
*[self.wardrobe addItemObject:newItem];*
newItem.wardrobe = self.wardrobe;
NSLog(@"Item saved");
}
NSError *error = nil;
// Save the object to persistent store
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
我在执行save方法时收到此错误消息
[WardrobeList addItemObject:]: unrecognized selector sent to instance 0x788d2880
有人能告诉我我做错了什么,以及如何纠正吗
最后,我想在新的表视图中显示所选衣柜中的所有项目,一旦用户在衣柜列表中选择了特定衣柜
非常感谢你的帮助。谢谢。您的
CoreDataGeneratedAccessor
是自动生成还是键入的?如果我有关系,例如
@属性(非原子,保留)NSSet*房间代码>
我的代码是用项目名称而不是实体名称生成的
-(void)addRoomsObject:(Room*)值代码>
(识别房间中的s)。如果不是这样,请查看您的模型(两个实体之间的正确连接,模型和类中的命名相同),或者查看是否有更多错误信息我的CoreDataGeneratedAccessor是在生成子类后添加“多对多”关系时键入的。我将用附加的“s”更新我的子类,然后再次尝试运行它。我会随时通知你的,谢谢!在将“s”添加到CoreDataGeneratedAccessor后,我能够保存该项目。我没意识到这件小事会引起问题。谢谢你的帮助!