2016-09-15 3 views
21

Преобразование моего кода в Swift 3 Я нашел странную проблему. Прямо сейчас (15 сентября 2016 года) Xcode 8 (общедоступная версия) отключен, и после преобразования кода мое приложение вылетает без видимой причины.Проблема с автоопределением Xcode 8 [_SwiftValue nsli_superitem]

Существует что-то не так с Auto Layout и журнал говорит что-то вроде:

[_SwiftValue nsli_superitem]: unrecognized selector sent to instance 

Как я могу решить? Благодаря

ответ

37

Просто понял, странно, но рабочее решение:

Вместо того, чтобы делать это:

let views = ["view":aView] 
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "...", options:[], metrics: metrics, views: views)) 

Declare словарь явно:

let views: [String:UIView] = ["view":aView] 
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "...", options:[], metrics: metrics, views: views)) 

Я знаю, это странно, но это работает , Cheers

+9

Спасибо, что поделились этим. Для меня это разворачивало представление, которое было необязательным. Поэтому 'let views = [" view ": aView!]' –

+0

По крайней мере, ваш конвертирован. Мое обновление проекта полностью игнорирует все мои ограничения. Отменил изменения и повторил 3 раза подряд. Мой клиент просто будет любить меня, чтобы полностью переделать весь интерфейс до того, как добрались до небольших функций, которые они хотели обновить. – DiggyJohn

+0

Спасибо @martn_st, вот что сработало для меня. Мое объявление «@IBOutlet weak var aTableView: UITableView!», Которое, как я думал, означало, что оно уже развернуто. Думаю, в Swift 3 этого недостаточно? – Bek

2

В быстрой версии 3 мы изменили способ работы с неявно разворачиваемыми опциями. Рассмотрим следующий пример:

let optionalInt: Int! = 1 
let int = optionalInt 
let array = [int, 2] 
print(array) // prints: [Optional(1), Optional(2)] 

Так вместо того, чтобы массив типа [Int], как и ожидалось, мы теперь имеем [Int?], что вызывает вышеуказанную ошибку во время выполнения.


pascalbros «s обходной путь явно объявить тип переменной решает эту проблему, но, чтобы быть уверенным, что там происходит, я бы рекомендовал проверить возможные неожиданно получать УСТРОЙСТВА в массив или словарь и изменяя свой предполагаемый тип.

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