Автозаполнение Xcode 9 не работает 100% - частично работает


121

Сегодня утром Xcode 9.0 (9A235) показывает новое / странное поле Auto Complete, которое совсем не то, что было раньше. Как мне получить поле полного автозаполнения, чтобы автозаполнение выглядело так, как обычно?

введите описание изображения здесь


1
Удаление папки ПОЛУЧЕННЫХ ДАННЫХ решило эту проблему для меня. Благодаря другому посту. Благодаря этому сообщению: stackoverflow.com/questions/28429630/…
Эрни,

Наверное, потому, что индексация еще не завершена.
ozgur

1
Пробовал все предложенные решения, и ничего не помогло с одним из моих проектов 🙁
Александр Васенин

3
11.3 - катастрофа в этом вопросе. Часто помогает простой перезапуск Xcode: /
Fattie

Ответы:


236

Пытаться:

  1. Перейдите в Xcode> Настройки> Редактирование текста
  2. В разделе Завершение кода - снимите флажок "Предлагать завершения при вводе".
  3. Выйдите из Xcode и перезапустите Xcode.
  4. Снова перейдите в Xcode> Настройки> Редактирование текста.
  5. Выйдите из Xcode и перезапустите Xcode.
  6. Теперь перейдите к Автозавершение кода и отметьте «Предлагать дополнения при вводе».
  7. Попробуйте ввести библиотечную функцию или перечисление и наслаждайтесь!

2
отличное решение. так странно. Интересно, как вы это воспроизвели.
Кунал Гупта

1
Ответ на миллион долларов. Это даже исправило 'Jump to Definition'.
OutOnAWeekend,

Все еще требуется в Xcode 11.2, спасибо за этот странный
Rocket Garden

Это ошибка в Xcode, поскольку всегда новые обновления создают новые проблемы, рабочее решение для меня: 1 - Достаточно Xcode. 2- подождите несколько секунд. 3- Откройте Xcode, но ничего не трогайте, даже не нажимая где-нибудь в редакторе. 4- Дождитесь завершения индексации. Автозаполнение теперь работает.
Шахриар

1
Все еще необходимо в XCode 11.5, Каталина, июль 2020 г. Большое спасибо!
Рубен Скрэттон,


30

Что стоит попробовать:

1

Выполните эту команду в каталоге проекта, если вы используете cocoapods:

rm -rf ~/Library/Caches/CocoaPods;
rm -rf Pods; rm -rf ~/Library/Developer/Xcode/DerivedData/*;
pod deintegrate; pod setup; pod install;


2

Очистить кэшированные данные

Очистить проект -> Cmd + Shift + K

Очистить папку сборки -> Cmd + Shift + Option + K

Если вы пропустили первый шаг:
Удалить производные данные
Xcode Preferences-> Locations->
Символ стрелки. Переход к DerrivedData-> Удалить папку.


3

Проверьте источники компиляции вашей фазы сборки.

Каждые .swiftи .mфайл в проекте , должны быть в этом списке , или он не будет автозаполнение в этих файлах.


4

Оптимизируйте свой редактор:

Используйте fileprivate для каждого свойства и функции класса, которые вы можете, чтобы уменьшить объем работы компиляторов для каждого элемента.

Напишите модульный код / ​​ООП, чтобы у вас было меньше кода для чтения компилятором.

Избегайте использования Type Inferance, когда результатом является сложное вычисление, и попытайтесь разбить сложные вычисления на let this = smallerOperationутверждения.


В XCode 9.2 больше нет символа стрелки в папке производных данных. Спасибо за совет fileprivate. Кошмар продолжается ...
Сал

Я все еще вижу стрелку. Это было в более ранней версии 9.2 или что-то в этом роде?
Sethmr

28

Xcode версии 11.0 (11A420a)

Я пробовал решение от Lal Krishna для Xcode V11.0. Несколько раз получалось, но потом результата не было.

Я нашел одно решение. Вы должны удалить два файла:

  1. Библиотека / Разработчик / Xcode / Производные данные (как описано ранее)
  2. Библиотека / Разработчик / Xcode / UserData / IDEEditorInteractivityHistory

Это решение помогает мне сейчас. Может быть полезно другим 😉


3
работал у меня. Я просто хочу сказать, что Visual Studio 2002 (!) Лучше, чем Xcode 2009-2019. Все эти годы Xcode был таким глючным. Я не понимаю, почему Apple не заботится о разработчиках. Xcode сделан разработчиками! (Пришлось достать)
user1105951 05

Это работает для меня: выйдите из Xcode, удалите 2 папки, как вы сказали, перезапустите Xcode и все проблемы исчезнут: D
phuongzzz

20

Это может произойти, если файл не является членом Target. Откройте файл, в котором не работает автозаполнение, и покажите вкладку «Утилиты» в правом верхнем углу Xcode (синий на скриншоте ниже). Скриншот кнопок верхнего правого вида Xcode

Снимок экрана с параметрами членства в Xcode Target

Убедитесь, что ваша цель (обычно имя вашего приложения) отмечена. Автозаполнение должно работать почти мгновенно без перезапуска Xcode, очистки или удаления производных данных.

Если он уже отмечен, обязательно снимите флажок и снова установите его. Для меня это сработало.


только открытие этой страницы и закрытие работали. Я запутался. Спасибо, кстати.
Охан Окбай

Это работало на xcode 10. Файл действительно уже был членом цели. Мне пришлось снять отметку, а затем снова проверить, чтобы меня признали таковой.
Jim75

это случилось со мной после git merge, я думаю, одна ветка написала поверх моего текущего файла проекта, а другая неправильно слилась с ним.
Асфанд Шабир

11

Я использую Xcode 10.2, и у меня была такая же проблема.

Этот ответ от акселя помог мне исправить.

Во всяком случае, я опишу еще немного:

  1. Перейдите YourProject.xcodeproj, щелкнув правой кнопкой мыши, и откройтеShow Package Contents
  2. Зайдите xcuserdataи удалите свойyouruser.xcuserdatad

Если у вас также есть xcworkspace(если у вас уже установлены какие-либо модули ), выполните шаги 3 и 4, если нет, просто пропустите шаги 3 и 4:

  1. Перейдите YourProject.xcworkspace, щелкнув правой кнопкой мыши, и откройтеShow Package Contents
  2. Зайдите xcuserdataи удалите свойyouruser.xcuserdatad

  3. Выйти из Xcode

  4. Удалите производные данные с помощью Терминала:

rm -rf ~ / Библиотека / Разработчик / Xcode / DerivedData

  1. Откройте Xcode и проверьте, работает ли он.

введите описание изображения здесь


11

Это также может произойти, если вы дали своим файлам избыточные имена. Например,

Data.swift

Data.swift


1
В моем случае это была проблема, у меня одно и то же имя файла в двух разных папках
Raj

Со мной тоже такое бывает. Два файла ViewController
Shark Deng

1
В моем случае у меня была виртуальная группа с именем ABC и файл внутри этой группы с именем ABC.swift. Это исправило переименование файла. Спасибо
Rem-D


5

Пожалуйста, попробуйте сделать это:

Выберите файл >> проверьте, добавлен ли файл в целевые объекты UITesting или UnitTesting (Инспектор файлов -> Целевое членство) . Если да, снимите эти два флажка и убедитесь, что выбрана только цель проекта. Затем создайте и попробуйте, если автозаполнение работает нормально.

Это сработало для меня. Надеюсь, это кому-то поможет.


5

Вот небольшой обходной путь, но он работает.

  1. Очистить проект ... Command + Shift + K

  2. Очистите папку сборки ... Command + Shift + Options (Alt) + K

  3. Удалить производные данные для проекта ... Это можно сделать по этой ссылке:

    Как я могу удалить производные данные в Xcode 9?

  4. Закройте XCode.

  5. Снова откройте XCode (дайте завершение индексации) и соберите проект ... Command + B

Как только строительство будет завершено, предложения вернутся. Я пробовал дважды.

Обновить:

Иногда проблема может быть такой же простой, как повторяющиеся имена файлов. Внимательно проверьте, не конфликтуют ли добавленные вами новые имена файлов со старыми файлами.

В Xcode 11.4, даже если вы переместите существующий файл в другую группу, предложения исчезнут. Это можно исправить, просто перезапустив Xcode.


4

После долгих поисков я наконец решил проблему. В Xcode> Настройки> Редактирование текста в разделе «Завершение кода» я по какой-то причине проверил «Использовать клавишу Escape для отображения предложений завершения». Как только я снял этот флажок, автозавершение работало как шарм, даже без перезапуска Xcode! (Xcode 10)


3

Я добавил сюда то, что происходило в моем проекте, на случай, если это может помочь кому-то другому ... У меня было 2 файла с одинаковым именем, и я не осознавал.


2

Просто потерял день, пытаясь решить кошмар автозаполнения Xcode (9.2). Удаление производных данных, казалось, сработало ненадолго, затем все вернулось. Перезагрузки и т. Д. И другие предлагаемые вуду не помогли.

Я сдался и загрузил 30-дневную пробную версию AppCode от Jet Brains. Автозаполнение там отлично работало, и это может быть совпадение, но затем оно снова начало работать в моем проекте в Xcode. Не могу гарантировать, что он продолжит работать ...


"другое предложенное вуду" смеется - так хорошо сказано ... мы теряем так много времени на поиск обходных путей для ошибок Apple, но я перестал жаловаться на xcode, когда начал использовать студию Android
JohnV

2

В моем случае это похоже на файл (Xcode 9.2). Для меня исправление было:

  1. Удалить проблемный файл (удалить ссылку)
  2. Очистить и построить
  3. Добавить файл обратно в проект (тестовые цели не проверял)
  4. Строим снова

Наконец, после 3 часов пробования все - автозаполнение работает как надо.


2

Проблемы в основном из-за отсутствия местоположения некоторых файлов в навигаторе проекта (ошибки сборки)

  1. Нажмите command + 1, чтобы открыть Project Navigatorпанель
  2. Проверьте, есть ли отсутствующие файлы

Или вы можете:

  1. Удалить DerivedData (команда + shift + K)
  2. Папка чистой сборки (команда + shift + option + K)
  3. Снова нажмите build (command + B)
  4. Вы должны увидеть ошибку сборки, что Xcode не может найти некоторые файлы, которые не позволяют инструменту сборки обрабатывать автозаполнение.
  5. Исправьте и исправьте все отсутствующие файлы, которые вы видите.

Надеюсь это поможет



2

Для Xcode 11.4 (11E146)

Обратная косая черта в имени папки нарушает функцию автозаполнения. Если это так, удалите ее и создайте заново.

введите описание изображения здесь


1

Для меня это происходило в моем тестовом файле, потому что по какой-то причине он не был частью цели. Установка его целевого членства решила проблему.


1

Для меня проблема возникла, когда я отменил все изменения одного файла (в разделе «Управление исходным кодом»> «Зафиксировать»), что фактически удалило файл. Это то, что я хотел, и я подумал, что файл и все ссылки на него тоже будут удалены.

Тем не менее, в навигаторе проекта все еще была ссылка на файл (показанный красным). Удаление (теперь уже несуществующего) файла в навигаторе проекта волшебным образом вернуло автоматическое завершение.

Никакая очистка, удаление производных данных и т. Д. Не помогли. Я понял, что удаленный файл все еще отображается, когда я попытался собрать свой проект, что, конечно же, не удалось, потому что он не смог найти этот файл.

Надеюсь, это поможет кому-то сэкономить 30 минут :)


См. Мой ответ, почему.
Джеймс Буш

@ponury, я не понимаю ... Второй абзац OP - это решение, не так ли?
brasofilo

1

Использование Command + B
или Command + R для сборки или запуска проекта
Xcode иногда дает сбой;)


1
  1. проверьте, выбрали ли вы Suggest completions while typingв Xcode -> Настройки -> Редактирование текста
  2. перейдите к user-> Library-> Developer-> Xcode-> DerivedData в Finder и удалите папку DerivedData.

1

Мой случай может показаться слишком конкретным, чтобы помочь, но он может дать кому-то представление о том, как решить проблему неработающего автозаполнения. Xcode 10.2.1.

В моем случае автозаполнение полностью перестало работать, и ни один из этих ответов мне не помог. Кроме того, было слышно, как вентилятор на компьютере работает громче, указывая на то, что что-то перегружено (другие приложения не работают), следует отметить, что я редактировал на ноутбуке MacBook Pro. Похоже, это было связано с тем, что редактор изо всех сил пытался разобрать уравнение, которое я написал:

switch mtype {
    case .indeterminate:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
    case .right:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2) + (frame.width / 2)
    case .left:
      newPosition.x = (((frame.width / 2) - mainFigureText.frame.width) / 2)
 }

Я хотел анимировать текстовое представление слева, справа или посередине в зависимости от пользовательских настроек. Это newPositionобъект CGPoint, в который будет выполняться анимация текста. Так или иначе, я разделил уравнения на части, и внезапно автозаполнение начало работать, и вентилятор затих! Мне удалось воссоздать эту конкретную проблему более одного раза, повторно набрав приведенный выше код, а затем заменив его на:

let halfFrameWidth: CGFloat = frame.width / 2
let middleLeft = (halfFrameWidth - mainFigureText.frame.width) / 2

switch doseType {
    case .right:
      newPosition.x = middleLeft + halfFrameWidth
    case .left:
      newPosition.x = middleLeft
    default:
      newPosition.x = (frame.width - mainFigureText.frame.width) / 2
 }

1

Я хотел бы добавить еще одно в кучу решений, потому что это единственное, которое у меня сработало и его здесь нигде не найти.

Xcode обычно поставляется с двумя конфигурациями сборки по умолчанию для каждого проекта. Release& Debug. У меня есть еще один для моих модульных тестов, который называется Testing. В Xcode 10.1, 10.2, 10.3 и 11 beta новой системе сборки это, похоже, не нравится, и она будет выполняться автоматически, только если вы используете Releaseили Debug. Любая настраиваемая конфигурация сборки прерывает автозаполнение в смешанном (swift + objc) проекте с модульными тестами.


0

Эта ссылка мне помогла. Откройте настройки сборки и заполните пути поиска фреймворка. См. Изображение ниже.

введите описание изображения здесь


0

Ошибки сборки могут нарушить функцию автозаполнения в Xcode.


0

У меня была проблема со 100% неработающим автозаполнением, ничего из написанного здесь не помогло. Я заметил одну вещь - он был сломан сразу после добавления некоторых сущностей в файл .xcdatamodel, которые по умолчанию имеют определение класса codegen.

Поэтому я не удивился, когда при использовании старого стиля codegen none (и, конечно, генерации классов) проблема сразу устранилась, даже без перезапуска xcode.

введите описание изображения здесь


0

В Xcode 11.1 простого выполнения Clean Build Folderили удаления производных данных было недостаточно для исправления автозаполнения.

Только после перезапуска моего Mac все вернулось в норму


0

Если у вас возникла проблема со странным завершением / автозаполнением / intellisense (не показывающими вещи по умолчанию, такие как методы делегатов и протоколов источников данных), просто измените свою цель (например, с симулятора iPhone 8 на реальное устройство), создайте проект и вернитесь к исходной цели ,

Аналогично проблемам с Interface Builder (раскадровки), который ничего не показывает, а только «ничего не выбрано» всякий раз, когда вы выбираете какую-либо часть представления. Просто переключитесь на другой Xib / Storyboard (или даже создайте новый), проверьте, работает ли он там, и переключитесь обратно.

Эти обходные пути сработали для меня в обоих случаях (обе проблемы были устранены за один день с одним проектом на Xcode 10.2.1). Судя по тому, что я видел на интернет-форумах, кажется, что это ошибки, которые никогда не исправлялись начиная с Xcode 6.x или около того.

Ура!


0

В моем случае (Xcode 11.1) это произошло, когда я остановил автоиндексирование Xcode с помощью этой команды defaults write com.apple.dt.Xcode IDEIndexDisable -bool true.

Так что откатываю с помощью defaults write com.apple.dt.Xcode IDEIndexDisable -bool false. затем перезапустите macOS и снова запустите Xcode.


0

Была такая же проблема с Xcode 11.3. Ничего из вышеперечисленного не помогло, оказалось, что у меня были ошибки сборки. Просто исправьте ошибки сборки, и автозаполнение снова заработает.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.