-1

好的,我查看了其他类似的问题,但我无法弄清楚为什么 NSNumber 与 UIText 字段不兼容。

我的.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;
}

任何帮助都会很棒,谢谢

4

2 回答 2

3

你想设置 UITextField 的 text 属性。

[incomePerHour setText:[resultNumber stringValue]];

再见 !

编辑:您也可以在没有 NSNumber 的情况下执行此操作:

[incomePerHour setText:[NSString stringWithFormat:@"%f", hourlyIncome]];

由于 %f (默认舍入到小数点后 6 位),您的精度会降低,但%.42f如果您想要 42 位小数点,您可以使用。

于 2013-08-13T02:54:08.057 回答
1

我无法弄清楚为什么 NSNumber 与 UIText 字段不兼容。

因为它们是不同类型的对象,并且 Objective-C 中没有像 C++ 和其他语言中那样的隐式类型转换(除了免费桥接)。事实上,将数字对象隐式转换为文本字段对象并没有多大意义。

你想要做的是:

// Set incomePerHour text field text property with number formatted to two decimal places
incomePerHour.text = [NSString stringWithFormat:@"%.2f", hourlyIncome];

PS要创建一个NSNumber,你可以这样做:

NSNumber *resultNumber = @(hourlyIncome);
于 2013-08-13T02:55:44.617 回答