2015-06-21 87 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