好的我看了其他类似的问题,但我无法弄清楚为什么NSNumber与UIText Field不兼容。
我的.h
@property (weak, nonatomic) IBOutlet UITextField *initialBudget;
@property (weak, nonatomic) IBOutlet UITextField *expenses;
@property (weak, nonatomic) IBOutlet UITextField *timeSpent;
@property (weak, nonatomic) IBOutlet UITextField *incomePerHour;
这是我的计算
- (IBAction)calculateResults:(id)sender {
double budget = [initialBudget.text doubleValue ];
double expense = [expenses.text doubleValue];
double time = [timeSpent.text doubleValue];
double hourlyIncome = (budget - expense)/time;
NSNumber *resultNumber = [[NSNumber alloc] initWithDouble:hourlyIncome];
incomePerHour = resultNumber;
}
任何帮助都会很棒,谢谢
答案 0 :(得分:3)
您想要设置UITextField的文本属性。
[incomePerHour setText:[resultNumber stringValue]];
再见!
编辑: 你也可以在没有NSNumber的情况下做到这一点:
[incomePerHour setText:[NSString stringWithFormat:@"%f", hourlyIncome]];
由于%f(默认情况下舍入为小数点后6位),精度会降低,但如果需要42位小数,则可以使用%.42f
。
答案 1 :(得分:1)
我无法弄清楚为什么NSNumber与UIText Field不兼容。
因为它们是不同类型的对象,并且在Objective-C中没有隐式类型转换(除了免费桥接),就像在C ++和其他语言中一样。实际上,隐式地从数字对象转换为文本字段对象并没有多大意义。
你想要做的是:
// Set incomePerHour text field text property with number formatted to two decimal places
incomePerHour.text = [NSString stringWithFormat:@"%.2f", hourlyIncome];
P.S。要创建NSNumber
,您可以执行以下操作:
NSNumber *resultNumber = @(hourlyIncome);