Squeak.ru - шаблоны программирования

Метод делегирования в 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()
15.07.2015

Ответы:


1

измените myDelegate!.appendName(имя) на myArrStore.appendName(имя)

15.07.2015

2

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

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

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

сначала -> Поиск «Делегация»

15.07.2015
  • Я много раз читал документацию Swift, но не могу найти, как вы устанавливаете myDelegate. За исключением var myDelegate: myProtocol?, я пробовал все, но всегда получаю ошибки Xcode или получаю ноль. Пожалуйста, покажите мне, как, если вы будете так любезны. Я не инициализирую MyArrayStore class во ViewController, это ошибка, оставшаяся от всех экспериментов! 17.07.2015
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...