Obj-C:从'NSNumber * _strong分配给'UITextfield * _strong'的指针类型不兼容

时间:2013-08-13 02:50:26

标签: iphone ios objective-c

好的我看了其他类似的问题,但我无法弄清楚为什么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;
}

任何帮助都会很棒,谢谢

2 个答案:

答案 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);