Xcode 9 Autocomplete не работает 100% - частично работает

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

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

Ответ 2

Попробуйте:

  • Перейдите в Xcode > Настройки > Редактирование текста
  • По завершению кода - Снимите флажок "Предложить завершение при вводе"
  • Выйдите из Xcode и затем перезапустите Xcode.
  • Перейдите в Xcode > Настройки > Редактирование текста снова
  • Выйдите из Xcode и затем перезапустите Xcode.
  • Теперь перейдите к завершению кода и проверить. Предложите завершение при вводе '.
  • Попробуйте ввести библиотечную функцию или enum и наслаждайтесь!

Ответ 3

Что нужно попробовать:

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 PreferencesLocations
Символ "Стрелка" Подключает вас к DerrivedData → Удалить папку


3

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

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


4

Оптимизировать редактор:

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

Запишите модульный/OOP-код, чтобы у вас было меньше кода для компилятора.

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

Ответ 4

Это может произойти, когда файл не является членом цели. Откройте файл, где автозаполнение не работает, и откройте вкладку "Утилиты" в правом верхнем углу XCode (синий на скриншоте ниже). Screenshot of Xcode top right view buttons

Screenshot of Xcode Target Membership options

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

Ответ 5

Удаление файла из тестовых целей устранило мою проблему.

Ответ 6

Я использую 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 ~/Library/Разработчик /Xcode/DerivedData

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

enter image description here

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

Data.swift

Data.swift

Ответ 10

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

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

Ответ 11

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

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

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

Ответ 12

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

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

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

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

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

Ответ 13

Здесь немного обойти, но работает.

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

  2. Очистить папку сборки... Ctrl + Shift + Опции (Alt) + K

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

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

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

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

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

Ответ 14

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

Ответ 15

Это может быть из-за многих причин; Одной из возможных причин является проблема с памятью, т.е. когда в вашей системе заканчивается память.

Вы можете проверить использование памяти с помощью "Activity Monitor" в macOS.

Попробуйте очистить проект с помощью command + shift + k.

Выйдите из Xcode и запустите его снова, затем соберите его, затем начните вводить автозаполнение, и оно должно работать нормально.

Ответ 16

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

Ответ 17

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

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

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

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

Ответ 18

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

Ответ 19

  1. проверять, выбрали ли вы Suggest completions while typing в Xcode → Preferences → Text Editing
  2. перейдите к user-> Библиотека → Developer-> Xcode-> DerivedData в Finder и удалите папку DerivedData

Ответ 20

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

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

Ответ 21

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

enter image description here

Ответ 22

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

Ответ 23

Мой случай может показаться слишком конкретным, чтобы помочь, но он может дать кому-то представление о том, как решить неисправное автозаполнение. 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
 }

Ответ 24

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

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

enter image description here

Ответ 25

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

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

Ответ 26

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

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

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

Ура!

Ответ 27

Единственное время, когда автозаполнение не работает, это когда тип исходного кода для файла не установлен в Objective-C или когда вы пишете на другом языке (даже если только небольшой фрагмент, скажем, C).

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

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