Swift — CompletionHandler, созданный как параметр в функции (UsingObjectMapper)

Я пытаюсь передать завершениеHandler в качестве параметра функции (здесь нет проблем). Моя проблема в том, что у меня есть несколько точных типов, которые я могу получить в моей функции завершенияHandler.

Поэтому я подумал: «Давайте использовать шаблоны» и попробовал.

Вот схема, которую я хочу использовать: FuncA(completionHandler as MyType?) -> FuncB(..){completionHandler(Mappable?)} -> FuncC(sender: T?){performSegueWithIdentifier("segue", sender)}

Проблема: Функция Func A выводит сообщение об ошибке Func B, кажется, в порядке Func C, кажется, в порядке

Вы знаете, как это сделать, я еще не привык к шаблонам ?? Спасибо за любую помощь :)


person Fabrice Froehly    schedule 26.05.2016    source источник


Ответы (1)


Я не верю, что вы можете использовать такое завершениеHandler в сигнатуре метода. Вам нужно будет выполнить приведение типов внутри тела метода. например

  typealias handler = () -> Array<AnyObject>

  funcA(handler)

  func funcA<T>(completion: T?) -> funcB {

    if let completion = completion as? handler {
      let array = completion()
      //do whatever you want here
    }
  }
person Dare    schedule 26.05.2016