2015-04-05 3 views
0

Я пытаюсь создать приложение iOS в Xcode v6.2, используя быстрый, как небольшой личный проект. До сих пор я купил биты из моих собственных исследований, однако следующий код вызывает ошибку, когда я пытаюсь построить. Построение полных приложений в swift хорошо выходит за рамки моих знаний, поэтому я надеюсь, что это будет очевидно, что кто-то может любезно провести меня в правильном направлении.непредвиденная ошибка сборки в Xcode

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

Вот код:

import UIKit 
import iAd 
import QuartzCore 


class ViewController: UIViewController, ADBannerViewDelegate, UIPickerViewDataSource, UIPickerViewDelegate{ 

@IBOutlet weak var yearPicker: UIPickerView! 
@IBOutlet weak var yearLabel: UILabel! 


    let listView = ["2013", "2014", "2015"] 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     println("Entering super.viewDidload() function") 
     yearPicker.delegate = self 
     yearPicker.dataSource = self 
    } 

    //Data Sources 
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return listView.count 
    } 

    //Delegates 
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
     return listView[row] 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     yearLabel.text = listView[row] 
    } 

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

Ошибка я получаю это:

fatal error: unexpectedly found nil while unwrapping an Optional value

и следующая строка будет выделена в IDE:

yearPicker.delegate = self 

Если есть что-нибудь еще, что может помочь, пожалуйста, дайте мне знать.

+3

У вас есть IBOutlets. Вы правильно подключили элементы. Сообщение об ошибке довольно понятно: найдено нуль в необязательном. Единственной опцией в этой строке является yearPicker. Он явно развернут, поэтому он, вероятно, не настроен правильно. – Abizern

+0

Приветствия, которые привели меня на правильный путь - я оставил свой полный ответ ниже –

ответ

1

Итак, я закончил работу снова, создав соединение ctrl + перетащив в редактор, чтобы создать соединение @IBOutlet.

Затем я удалил .delegate и .dataSource, потому что получил ошибку, указав, что в этом году у Picker не было этих членов. Итак, теперь я остался с этим кодом, который отлично работает :)

Спасибо Абизерн за то, что вы меня на правильном пути.

import UIKit 
import iAd 
import QuartzCore 


class ViewController: UIViewController, ADBannerViewDelegate, UIPickerViewDataSource, UIPickerViewDelegate{ 

    @IBOutlet var yearPicker: [UIPickerView]! 
    @IBOutlet weak var yearLabel: UILabel! 

    let listView = ["2013", "2014", "2015"] 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    //Data Sources 
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { 
     return 1 
    } 
    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
     return listView.count 
    } 

    //Delegates 
    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! { 
     return listView[row] 
    } 

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     yearLabel.text = listView[row] 
     } 

override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
Смежные вопросы