Core data 基于现有托管对象属性创建新对象的关系
我有以下数据模型:Core data 基于现有托管对象属性创建新对象的关系,core-data,save,entity,relationship,managedobjectcontext,Core Data,Save,Entity,Relationship,Managedobjectcontext,我有以下数据模型: entityA<-->>entityB<<-->>entityC entityD<-->>entityE 然后,我在此处的“保存”操作中保存到上下文: - (IBAction)save:(id)sender { EntityD *newEntityD = [NSEntityDescription insertNewObjectForEntityForName:@"EntityD"
entityA<-->>entityB<<-->>entityC
entityD<-->>entityE
然后,我在此处的“保存”操作中保存到上下文:
- (IBAction)save:(id)sender {
EntityD *newEntityD = [NSEntityDescription insertNewObjectForEntityForName:@"EntityD"
inManagedObjectContext:self.managedObjectContext];
[newEntityD setValue:self.UILabel2.text forKey:@"nameD"];
EntityE *newEntityE = [NSEntityDescription insertNewObjectForEntityForName:@"EntityE"
inManagedObjectContext:self.managedObjectContext];
[newEntityE setValue:self.UILabel1.text forKey:@"nameE"];
NSError *anyError = nil;
BOOL savedSuccessfully = [self.managedObjectContext save:&anyError];
if (!savedSuccessfully) {
}
}
这适用于设置nameD和nameE。我正在尝试为EntityD和EntityE创建新创建的对象之间的关系。假设entityE和entityD之间的关系是toD。我已尝试了“保存”操作:
[newEntityE setValue:self.UILabel2.text forKey:@"toD"];
但我有一个错误:
“NSInvalidArgumentException”,原因:“-[\uu NSCFString managedObjectContext]:发送到实例0x10939fd00的选择器无法识别”
如何在新创建的对象之间建立关系?我假设您使用的是
NSManagedObject
子类。在这种情况下,我建议不要使用繁琐的setValue
调用,而是使用方便的点表示法
与toD
的关系指向一个EntityD
对象,因此它不能是文本字段中的字符串。改为设置entityD:
newEntityE.toD = newEntityD;
当您通过关系“属性”将EntityD分配给EntityE时,将隐式创建该关系。看一下这些实体的头文件。您应该在EntityE中有这样一个属性(给定从E到D的一对一关系): 这意味着您必须通过其关系属性toD将EntityD“object”分配给newEntityE,如下所示:
// assuming EntityD has some property like NSString *name then
newEntityD.name = self.UILabel2.text;
newEntityE.toD = newEntityD;
看起来您试图直接分配NSString,而不是更新newEntityD的name属性,然后通过关系将newEntityD对象分配给newEntityE
@property (nonatomic, retain) EntityD *toD;
// assuming EntityD has some property like NSString *name then
newEntityD.name = self.UILabel2.text;
newEntityE.toD = newEntityD;