Нажав на ячейку таблицы, вы перейдете к другому представлению. Прибыв в другое представление, я вызываю веб-сервис для асинхронной загрузки данных.
Поскольку я хочу, чтобы мой класс ячеек был чистым от сетевого кода, я хочу определить свой вызов веб-сервиса в TableViewController и установить своего рода делегатное свойство моего TableViewCell для prepareForSegue ().
///TableViewController
override func prepareForSegue(...) {
dest = TableViewCell
dest.getDataDelegate = getData
}
func getData(...) -> X? {
...
}
///TableViewCell
var getProductDelegate: ((...) -> X?)!
override func viewWillAppear() {
...
getProductDelegate(...) //Error - Cannot call value of non function type
}
Если я получаю обход скобок вокруг объявления типа getData, он распознает его как функцию, но тогда классу нужен инициализатор. Я использую раскадровку, поэтому я хочу избежать этого.
Заранее спасибо!
Редактировать: я думаю, мне просто нужно развернуть его, если это опционально
Edit2: да, глупая ошибка. Мой плохой, выкладываю ответ
Хорошо, как опция, тип свойства getProductDelegate больше не является функцией.
Простая развёртка позволяет использовать её как функцию, как обычно:
if let func = getProductDelegate {
func(...)
}
Других решений пока нет …