我有一个视图,我想在其中保存两个实体的属性值: root、啤酒和注释。这些值具有相反的关系,但由于某些原因,仅保存了额定值。谁能告诉我,如果有的话,我做错了什么;或者,我应该做得不同吗?
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!");发布于 2013-05-24 14:31:33
单步执行此方法时签入调试器。我的猜测是,您没有正确地将属性连接到文本字段,或者此时文本值为空。似乎太巧合了,您直接访问的输入视图而不是通过属性(rateView)访问的输入视图是唯一有效的。
发布于 2013-05-24 14:31:47
我假设评论是一对一的,而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"];https://stackoverflow.com/questions/16728797
复制相似问题