首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Objective-C:NSNumber 無法直接指派給 UITextField,正確顯示計算結果

     編輯:程式設計綜合問答

錯誤訊息

Incompatible pointer types assigning to 'UITextField *_strong' from 'NSNumber *_strong'

問題程式碼

@property (weak, nonatomic) IBOutlet UITextField *incomePerHour;

- (IBAction)calculateResults:(id)sender {
    double hourlyIncome = (budget - expense) / time;
    NSNumber *resultNumber = [[NSNumber alloc] initWithDouble:hourlyIncome];
    incomePerHour = resultNumber; // ❌ 型別不符
}

原因

incomePerHour 是 UITextField(UI 控制項),而 resultNumber 是 NSNumber(數值包裝類別)。兩者完全不同,無法直接指派。

正確做法:轉為字串後設定 text 屬性

- (IBAction)calculateResults:(id)sender {
    double budget = [initialBudget.text doubleValue];
    double expense = [expenses.text doubleValue];
    double time = [timeSpent.text doubleValue];
    double hourlyIncome = (budget - expense) / time;

    // 格式化為字串,保留兩位小數
    incomePerHour.text = [NSString stringWithFormat:@"%.2f", hourlyIncome];
}

補充建議

  • 使用 NSNumberFormatter 處理貨幣、千分位、區域設定等更複雜的格式需求。
  • 輸入欄位建議加上 keyboardType = UIKeyboardTypeDecimalPad 限制輸入數字。
  • 計算前檢查 time != 0 避免除以零崩潰。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved