我有两个类或对象: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
。其他明智的做法是添加newUser
和一个Medicine
对象。
但我在以下地方遇到错误:
[medicine setUser:user];
我也尝试过这个:(因为我在另一个问题中遇到了这个问题)
[user addMedicineObject:medicine];
现在,我认为我必须重写addMedicineObject
方法或其他方法。
哦,我忘了错误。我收到此错误:(真正的反派)
[__NSArrayM managedObjectContext]: unrecognized selector sent to instance 0x8136bf0
现在有什么建议吗?
这是因为您试图突变NSSet
对象。您需要先创建可变副本,然后才能对其进行编辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句