我是 iPhone 开发新手,所以这似乎是一个非常愚蠢的问题,但我怎样才能将计算值保存到核心数据中?
背景 这个程序只是根据用户输入到文本字段中的内容来计算一个值。我将它们的数据类型设置为 NSStrings,当保存到核心数据时,一切正常。我将 NSStrings 转换为浮点数并执行适当的数学运算,以得出最终的计算值。这个最终值不会输出到文本字段,而是保存在核心数据中。我一直在同一行上收到这两个错误:*“将'double'传递给不兼容类型'NSString '的参数和“从不兼容类型'double'分配给'NSString *'。(第 10 行是带有这些消息的行)
1 float dollar1 = [self.dataModel.price floatValue];
2 float P1 = [self.dataModel.percentage floatValue];
3 float dollar2 = [self.dataModel.price floatValue];
4 float P2 = [self.dataModel.percentage2 floatValue];
5 float totalPrice = dollar1 + dollar2;
6 float totalPercentage = (P1 + P2) / 100;
7 double finalPrice = round(totalPrice / totalPercentage);
8 //Set final price to save in core data
9 NSLog(@"setting finalPrice to core data slot");
10 dataModel.finalPrice = finalPrice;
*就在我发布此代码之前,我尝试将第 7 行更改为
NSString finalPrice = totalPrice / totalPercentage;
这导致第 10 行的上述错误消失,但在第 7 行导致错误:“接口类型无法静态分配。” 这一切都太令人困惑了。我不明白为什么我所有的其他文本字段都保存到核心数据中,但是这个计算出来的不会。你们能给我的任何帮助将不胜感激。:)
编辑
所以我现在实际上是从NSLog(@"%@", dataModel.finalPrice);
我设置的那个中得到一个数字,但值是wayyyyy off。似乎数学没有正确完成:
1 int dollar1 = [self.dataModel.price intValue];
2 int P1 = [self.dataModel.percentage intValue];
3 int dollar2 = [self.dataModel.price2 intValue];
4 int P2 = [self.dataModel.percentage2 intValue];
5 int totalPrice = dollar1 + dollar2;
6 int totalPercentage = P1 + P2;
7 int finalPrice = totalPrice / ((double)totalPercentage);
8 NSDecimalNumber *finalFinalPrice = [[NSDecimalNumber alloc]initWithDouble:finalPrice];
9 //Set final price to save in core data
10 NSLog(@"setting finalPrice to core data slot");
11 dataModel.finalPrice = finalFinalPrice;
我添加了这些 NSLogs 以查看保存到核心数据中的内容
NSLog(@"%@", dataModel.price);
NSLog(@"%@", dataModel.percentage);
NSLog(@"%@", dataModel.price2);
NSLog(@"%@", dataModel.percentage2);
NSLog(@"%@", dataModel.finalPrice);
一切似乎都可以保存,但是例如,如果我有:
3.62 = dollar1;
2.2 = P1;
5.30 = dollar2;
.21 = P2;
totalPrice = dollar1 + dollar2; <--this should equal 8.92
totalPercentage = P1 + P2; <--this should equal 2.41
finalPrice = totalPrice / totalPercentage; <--- this should equal 3.70
然而,我对 NSLog 的输出显示值为 -2147483648。这到底是从哪里来的?
编辑 我把它保存了!这是我所做的:
1 NSString dollar1 = self.dataModel.price.text;
2 NSString P1 = self.dataModel.percentage.text;
3 NSString dollar2 = self.dataModel.price.text;
4 NSString P2 = self.dataModel.percentage2.text;
5 double Dollar1 = [dollar1 doubleValue];
6 double Dollar2 = [dollar2 doubleValue];
7 double p1 = [P1 doubleValue];
8 double p2 = [P2 doubleValue];
9 double totalDollar = Dollar1 + Dollar2;
10 double totalP = p1 + p2;
11 double finalPrice = totalDollar / totalP;
NSString *finalFinalPrice = [[NSString alloc] initWithFormat:@".2f", finalPrice];
12 //Set final price to save in core data
13 NSLog(@"setting finalPrice to core data slot");
14 dataModel.finalPrice = finalFinalPrice;
哇。这真是太棒了。我不敢相信最终的解决方案如此简单!再次感谢你的帮助!!