2015-01-07 75 views
1

我正在研究iOS 8的Udemy課程 - Swift語言。 而且我不斷收到試圖使一個待辦事項應用程序時,這個錯誤:Swift - 致命錯誤:意外地發現零,同時展開一個可選值(lldb)

致命錯誤:意外發現零而展開的可選值(LLDB)

這裏是代碼:

這裏下面的代碼:

class SecondViewController: UIViewController { 
 

 
    var toDoItems:[String] = [] 
 
    
 
    @IBOutlet var toDoItem: UITextField! 
 
    
 
    @IBAction func addItem(sender: AnyObject) { 
 
    
 
     toDoItems.append(toDoItem.text) 
 
     
 
     println(toDoItems) 
 
     
 
    } 
 

任何幫助嗎?

謝謝!

+0

你從哪裏得到那個錯誤和什麼是'toDoItem'? –

回答

0

這是因爲下面一行:

toDoItems.append(toDoItem.text) 

你IBOutlet中是可選的,所以它的價值可能爲零。如果你忘記將它連接到故事板,它將是零。所以在這種情況下,它會導致崩潰,因爲您正試圖訪問一個零的屬性!將其更改爲:

if let textValue = toDoItem?.text 
{ 
    toDoItems.append(textValue) 
} 
2

我假設錯誤與toDoItem屬性相關。

也許你忘了將該屬性正確連接到UI中的元素,以便變量爲null。

你聲明爲:

@IBOutlet var toDoItem: UITextField! 

這意味着它是一個可選值,它可能是零。在這種情況下,因爲你正在使用!代替?,這意味着當你訪問它的變量是隱式展開,所以你不必使用它像

toDoItem!.text 

的問題是,因爲該變量是可選的,你必須始終確保首先它在訪問它之前包含一個值,所以正確的代碼是:

@IBAction func addItem(sender: AnyObject) { 
    if(toDoItem != nil){ 
     toDoItems.append(toDoItem.text) 
    } 

    println(toDoItems) 

} 
相關問題