我有一个视图,我想保存2个实体的属性值:root beer和comments。这些值具有反比关系,但由于某种原因,仅保存评级值。谁能告诉我什么,如果有的话,我做错了;或者,应该采取不同的做法?
NSManagedObjectContext *context = [self managedObjectContext];
Comments* com = [NSEntityDescription insertNewObjectForEntityForName:@"Comments" inManagedObjectContext:context];
RootBeer* rootBeer = [NSEntityDescription insertNewObjectForEntityForName:@"RootBeer" inManagedObjectContext:context];
//save root beer values
[rootBeer setValue:self.rootBeerNameField.text forKey:@"rootBeerName"];
[rootBeer setValue:self.rootBeerBrewerField.text forKey:@"rootBeerBrewer"];
[rootBeer setValue:self.rootBeerLocationField.text forKey:@"rootBeerLocation"];
[rootBeer setValue:self.rootBeerDetailField.text forKey:@"rootBeerDetails"];
//save root beer comments/notes
[com setValue:self.rootBeerNotes.text forKey:@"rootBeerComment"];
[rootBeer setValue:com forKey:@"comments"];
//This is the only value that is being stored
[rootBeer setValue:[NSNumber numberWithFloat:rateView.rate]forKey:@"myRootBeerRating"];
NSError* error = nil;
if(![context save:&error]){
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
NSLog(@"Saved!");
答案 0 :(得分:2)
在单步执行此方法时检入调试器。我的猜测是你没有正确地将属性连接到文本字段,或者文本值在那时是零。您直接访问的一个输入视图而不是通过属性(rateView)是唯一有效的视图,这似乎太巧合了。
答案 1 :(得分:1)
我认为评论是一对一的,而rootbeer有一对多的关系。
您无需设置关系的双方。您只需设置一侧,核心数据将为您设置另一侧。
//save root beer comments/notes
[com setValue:self.rootBeerNotes.text forKey:@"rootBeerComment"];
//No need for this
//[rootBeer setValue:com forKey:@"comments"];
改为设置
//Set the one to one of rootBeer to comment
[com setValue:rootBeer forKey:@"key for root beer"];