2016-01-22 40 views
0

我正在製作我自己的應用程序,然後通過單擊player1button保存標籤並將其保存,然後在視圖中加載完成。問題是,我得到它後,它不會讓我再次改變它,當我嘗試點擊goalUp按鈕它出現錯誤:「線程1:EXC_BAD_INSTRUCTION」。它在viewDidLoad下的第一行說出這個錯誤。請幫忙!不會讓我在保存後更改標籤

@IBOutlet var goal: UILabel! 

@IBAction func player1button(sender: AnyObject) { 
    NSUserDefaults().setValue(goal.text!, forKey:"firstGoal") 
} 

var goal1 = 0 

@IBAction func goalUp(sender: AnyObject) { 
    goal1++ 
    goal.text = "\(goal1)" 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    goal1 = Int((NSUserDefaults().objectForKey("firstGoal") as? String)!)! 
    goal.text = (NSUserDefaults().objectForKey("firstGoal") as? String) 
} 
+0

你爲什麼不救第1個目標整型值,而不是節約的字符串? –

+0

我該怎麼做? –

+0

使用setIntegerForKey,你可以使用integerForKey來讀取它 –

回答

0

它可能與您傳遞goal1時的方式有關,有時可能與Int有關,但有時會作爲String。選擇一個,只是做到這一點。我認爲將它保留爲Int會更容易(請確保將它另存爲Int)。只要您想將Int轉換爲String,您就可以使用String(intValue)

編輯:我只是跑這個成功地

 var goal1String = "" 
// var goal1 = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
// goal1 = Int((NSUserDefaults().objectForKey("firstGoal") as? String)!)! 
     goal1String = String(NSUserDefaults().objectForKey("firstGoal")) 
     print(goal1String) 
     goal.text = (NSUserDefaults().objectForKey("firstGoal") as? String) 
} 


    @IBOutlet var goal: UILabel! 

    @IBAction func player1button(sender: AnyObject) { 
    NSUserDefaults().setValue(goal.text!, forKey:"firstGoal") 
    } 



    @IBAction func goalUp(sender: AnyObject) { 
     goal1++ 
     goal.text = "\(goal1)" 
    } 

使第1個目標一String而不是Int

0

嘗試setObject而不是setValueplayer1button方法:

NSUserDefaults.standardUserDefaults().setObject(goal.text!, forKey:"firstGoal") 

UPD

將數據寫入NSUserDefaults的並不總是立竿見影。致電synchronize立即保存它。

NSUserDefaults.standardUserDefaults().setObject(goal.text!, forKey:"firstGoal") 
NSUserDefaults.standardUserDefaults().synchronize() 
+0

仍然無法正常工作。 –

+0

檢查是一切正常在你的鑄造蜇int,在這裏看到http://stackoverflow.com/questions/24115141/swift-converting-string-to-int – shpasta

+0

查看更新的答案 – shpasta

0

It says this error on the first line under viewDidLoad. 豆你主要super.viewDidLoad()?也許你應該檢查你的super

+0

我的意思是goal1 = Int((NSUserDefaults()。objectForKey(「firstGoal」)as?String)!)! –