2015-07-15 3 views
0

Я пытаюсь реализовать метод делегата в Swift.Метод делегата в Swift, фатальная ошибка

Это ошибка, я получаю: fatal error: unexpectedly found nil while unwrapping an Optional value

Что я делаю не так ??

import UIKit 

protocol myProtocol { 
    func appendName(name: String) 
} 

class MyArrayStore: NSObject, myProtocol { 
    var myArray: [String] = ["Apple", "Carrot", "Orange"] 
    func appendName(name: String) { 
     myArray.append(name) 
     println("\(myArray)") 
    } 
} 

import UIKit 

class ViewController: UIViewController { 

    let myArrStore = MyArrayStore() 

    var myDelegate: myProtocol! 

    @IBAction func addName(sender: UIButton) { 
     let name = "John" 
     myDelegate!.appendName(name) // fatal error: unexpectedly found nil while unwrapping an Optional value 
    } 
} 

инициализирую MyArrayStore класс в AppDelegate в ApplicationDidFinishLaunching:

var myStore: MyArrayStore = MyArrayStore() 

ответ

0

изменение myDelegate .appendName (имя) для myArrStore.appendName (имя)

0

Я полагаю, что это происходит потому, что вы никогда не устанавливали свой myDelegate. И чем вы получите сбой, позвонив по телефону myDelegate!.appendName(name), потому что myDelegate - nil.

Но Пожалуйста, прочитайте некоторые основные концепции первой:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html

первый -> Поиск «делегации»

+0

Я читал Свифта документации много раз, но я не могу найти, как вы ** set ** 'myDelegate'. За исключением «var myDelegate: myProtocol?» Я пробовал все, но всегда получаю ошибки Xcode или получаю nil. Пожалуйста, покажите мне, как, если бы вы были так добры. Я не инициализирую класс MyArrayStore в ViewController, это ошибка, оставшаяся после всех экспериментов! – KaasCoder

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