Я столкнулся с ситуацией, когда xcode останавливает автозаполнение, и если вы попытаетесь написать переменную, которая уже определена, xcode говорит << error type>>
.
Вот моя ошибка:
Я столкнулся с ситуацией, когда xcode останавливает автозаполнение, и если вы попытаетесь написать переменную, которая уже определена, xcode говорит << error type>>
.
Вот моя ошибка:
Часто это означает, что ваш код в настоящее время не компилируется. У Swift часто возникают проблемы с вычислением типов кода, который сам по себе не является правильным. В некоторых случаях это ошибка в компиляторе. Использование AnyObject
может быть особенно запутанным для компилятора, и его следует избегать как можно больше. В этом случае требуется AnyObject
, но вы должны попытаться быстро преобразовать его в определенный тип. Не возвращайте [AnyType]
, если вы можете помочь ему.
Но короткий ответ заключается в том, что компилятор Swift все еще развивается, и он не всегда может выработать типы в сложных ситуациях, особенно на частичном или (в настоящее время) некорректном коде.
Обратите внимание, что вы используете var
для множества вещей, которые должны быть let
. Если вам действительно не нужно изменять переменную, вы должны предпочесть let
. Это помогает предотвратить множество ошибок, и с компилятором может быть проще справиться (поскольку у переменной меньше способов ее изменения).
Я начал видеть те же ошибки после обновления Xcode 6.1 и iOS 8.1. Я обнаружил, что если вы удаляете файл ModuleCache по пути /Users/username/Library/Developer/Xcode/DerivedData/ModuleCache
, он временно исправляет ошибку. И при этом вам не нужно закрывать Xcode или проект. Удалив файл, просто подождите, пока Xcode немного проиндексирует файлы проекта. После этого проблема в основном устраняется в течение некоторого времени.
Поскольку это не решит проблему навсегда, вы должны избегать написания кодов, вызывающих это согласно другим ответам, до тех пор, пока Apple не решит это.
<<error type>>
может возникнуть из-за того, что компилятор Swift не находит файл заголовка.
У вас есть какая-то структура папок, в которой находится ваш исходный код? Если да, попробуйте установить Scan All Source Files for Includes
на YES.
Это заставит Xcode просматривать все эти папки при попытке найти файл заголовка.
Посмотрите, где хранится файл, в котором указан ваш тип.
В настройках сборки убедитесь, что это местоположение включено в пути поиска.
Если это часть путей поиска заголовка пользователя, убедитесь, что Always Search User Paths
включен.
Посмотрите на суперклассы и т.д. вашего типа. Включены ли они в путь поиска?
Обнаружилось, что ошибка уходит, и автозаполнение работает снова, если я инициализировал такую переменную:
var name: String = "my name"
вместо:
var name = "my name" as String
Во-первых, попробуйте CMD-SHIFT-K после CMD-R, чтобы очистить, а затем запустить сборку.
Если это не работает, закройте XCode, удалите производные данные и снова запустите XCode.