2015-01-07 3 views
1

Я работаю над курсом Udemy для языка iOS 8 - Swift. И я получаю эту ошибку при попытке сделать To Do List приложения:Быстрота - фатальная ошибка: неожиданно обнаружена нуль при развертывании необязательного значения (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 не является обязательным, так что это значение может быть нулевым. Если вы забудете связать это с раскадрой, это будет ноль. Поэтому в этом случае это приведет к сбою, потому что вы пытаетесь получить доступ к свойству nil !!! Измените это на:

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

Я предполагаю, что ошибка связана с свойством toDoItem.

Возможно, вы забыли правильно связать это свойство с элементом в пользовательском интерфейсе, так что переменная имеет значение null.

Вы объявляя его как:

@IBOutlet var toDoItem: UITextField! 

, что означает, что дополнительное значение, оно может быть нулевым. В этом случае, поскольку вы используете! вместо?, это означает, что переменная неявно разворачивали при обращении к ним, так что вы не должны использовать его как

toDoItem!.text 

Вопрос заключается в том, что, поскольку эта переменная является необязательным, вы всегда должны убедиться, прежде всего, чтобы он имел значение перед его доступом, поэтому правильный код будет:

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

    println(toDoItems) 

} 
Смежные вопросы

 Смежные вопросы