我有两个类或对象:User
和Medicine
。这是我的User
课程:
@interface User : NSManagedObject
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSSet *medicine;
@end
@interface User (CoreDataGeneratedAccessors)
- (void)addMedicineObject:(Medicine *)value;
- (void)removeMedicineObject:(Medicine *)value;
- (void)addMedicine:(NSSet *)values;
- (void)removeMedicine:(NSSet *)values;
@end
然后是Medicine
类
@interface Medicine : NSManagedObject
@property (nonatomic, retain) NSString * medName;
@property (nonatomic, retain) NSString * medType;
@property (nonatomic, retain) Dose *dose;
@property (nonatomic, retain) User *user;
@end
由于我的界面清楚地表明用户可能有多种药物。 (我来自数据库背景,这就是为什么我这样解释它。)
当我在User
中添加新对象时,它很容易完成,但当我尝试为用户的现有对象添加新的Medicine
时,我觉得我的Xcode有一个很强烈的愿望来拍我那时(反之亦然)。
现在这里是描述我在做什么的代码:
Medicine *object = [[self fetchedResultsController] objectAtIndexPath:indexPath];
User *user = [NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext:self.managedObjectContext];
if(![self checkUser])
{
object.user = user;
[user setName:self.userName];
NSLog(@"%@ %@",object, user);
self.detailViewController.detailItem = object;
}
else
{
Medicine *medicine = [NSEntityDescription insertNewObjectForEntityForName:@"Medicine" inManagedObjectContext:self.managedObjectContext];
user = [self getUser:self.userName];
medicine.medName = object.medName;
medicine.medType = object.medType;
[medicine setUser:user];
self.detailViewController.detailItem = medicine;
}
我有一个简单的逻辑:如果用户在文本字段中输入的名称已存在于DB中,则返回User
对象。然后,只需为同一Medicine
添加另一条User
条记录。其他明智的方法是添加新的User
和Medicine
对象。
但我收到错误:
[medicine setUser:user];
我也试过这个:(因为我在像我这样的另一个问题中得到了它)
[user addMedicineObject:medicine];
现在我认为我必须覆盖addMedicineObject
方法或其他方法。
哦,我忘记了错误。我得到这个错误:(真正的反派)
[__NSArrayM managedObjectContext]: unrecognized selector sent to instance 0x8136bf0
现在有什么建议吗?
答案 0 :(得分:2)
这是因为你试图改变NSSet
对象。在编辑之前,您需要创建一个可变副本。