0

我有一个要保存 2 个实体的属性值的视图:根啤酒和评论。这些值具有反比关系,但由于某种原因,仅保存评级值。有人能告诉我我做错了什么吗?或者,应该做不同的事情?

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!");
4

2 回答 2

2

在单步执行此方法时签入调试器。我的猜测是您没有将属性正确连接到文本字段,或者此时文本值为零。您直接访问而不是通过属性 (rateView) 访问的一个输入视图是唯一有效的,这似乎太巧合了。

于 2013-05-24T06:31:33.383 回答
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"];
于 2013-05-24T06:31:47.443 回答