2015-06-21 77 views
-1

當我嘗試做一個簡單的應用程序,我得到這個錯誤:線程1:EXC_BAD_ACCESS(代碼= 1,地址= 0x176b)

@IBAction func pickButton(sender: UIButton) { 
    numberLabel.text = String(format: "The number is %@", randomNumber) Thread 1: EXC_BAD_ACCESS (code=1, address=0x176b) 
} 

下面是完整的代碼:

import UIKit 

class ViewController2: UIViewController { 
    @IBOutlet weak var numberLabel: UILabel! 
    @IBOutlet weak var pickButton: UIButton! 
    var randomNumber = arc4random_uniform(10000) + 1 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    @IBAction func pickButton(sender: UIButton) { 
     numberLabel.text = String(format: "The number is %@", randomNumber) 
    } 
} 

請幫忙,我不知道該怎麼辦。

回答

1

%@格式是用於打印Foundation對象如NSStringNSNumber

var randomNumber = arc4random_uniform(10000) + 1 

UInt32和印刷有%u爲 「無符號整數」:

numberLabel.text = String(format: "The number is %u", randomNumber) 

替代地,使用%@並將整數轉換爲NSNumber

numberLabel.text = String(format: "The number is %@", NSNumber(unsignedInt: randomNumber)) 

但在你的情況最簡單的解決方法是使用串插

numberLabel.text = "The number is \(randomNumber)" 
1

randomNumber在一個整數,而不是一個對象。格式說明符%@需要一個對象。使用適當的格式說明符,如%u

有關文檔,請參見String Format Specifiers

相關問題