2015-12-27 2 views
0

Открыть новый Swift проект и добавить к ViewController.swift:Swift: бесхозный не может быть применен к типу неклассовой THETYPE ->() -> THETYPE

private lazy var imagePicker = { 
    [unowned self] in 
    let retval = UIImagePickerController() 
    let selfDelegate = self as! protocol<UIImagePickerControllerDelegate, UINavigationControllerDelegate> 
    retval.delegate = selfDelegate 
    retval.allowsEditing = true 
    return retval 
}() 

(Мы переделка self с протоколом соответствия, поскольку протокол соответствия определяется в расширениях класса для удобства чтения)

Это производит две ошибки.

на первой строке:

'бесхозный' не может быть применен к типу неклассовую 'ViewController ->() -> ViewController'

и на последней строке:

не может ссылаться на значение типа «() -> _ 'с аргументом list()'

Обе эти ошибки не имеют для меня никакого смысла. Что они означают и как я могу их исправить.

+0

Вторая ошибка, вероятно, вызвана отсутствующим типом переменной. – Sulthan

ответ

1

Вы должны указать тип переменной:

private lazy var imagePicker: UIImagePickerController = { 

Это исправит оба ваших ошибок.

Компилятор просто запутался при попытке вывести типы. Закрытие, вероятно, слишком сложно для него, и все проблемы с отображением типов заканчиваются странными сообщениями об ошибках.

+0

Спасибо! Обновлено здесь https://github.com/fulldecent/FDTake/commit/d3c8a246a1ba971f6e7f247b49345a3875816f63 –

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