Автозаполнение Xcode 7.3 так разочаровывает


96

В Xcode появилась новая функция автозаполнения. Возможно, это может быть полезно, потому что он проверяет не только начало имен и т. Д. Но я обнаружил, что очень часто он не находит имя класса или константное имя вообще и т.д. В целом, я обнаружил, что это усложняет мою жизнь, а программирование отнимает больше времени. Есть ли способ вернуться к прежнему режиму работы?


Те, кто имел дело с 7.3 в качестве бета-версии, неделями жаловались на это: stackoverflow.com/questions/35586056/…
Мэтт

вы можете загрузить более старый xcode вручную на developer.apple.com/downloads , например xcode 7.2.1: adcdownload.apple.com/Developer_Tools/Xcode_7.2.1/…
Джордж

43
Я не могу поверить, что они выпустили крупный релиз, в котором было сломано что-то столь важное, как автозаполнение. Как будто никто в Apple на самом деле не использует Xcode для разработки.
soleil

3
Это так сильно сказывается на моей производительности, что я снова возвращаюсь к Xcode 7.2.1, чтобы снова вернуться к нормальной скорости разработки. Меня больше, чем обычно, раздражает Apple из-за этого. Они не только вынудили меня отправиться в Эль-Капитан, чтобы запустить Xcode 7.3, но когда я приехал туда, я обнаружил, что земля обетованная далека от реальности. Они вообще это тестируют? Как всегда, типичное неуважение к «своим» разработчикам.
Квинтин Уиллисон

2
Xcode 7.3.1 был выпущен вчера, после моих тестов эта ошибка все еще существует ... Но Apple заявляет, что исправляет ее в 7.3.1.
Винсент Сидит

Ответы:


18

Xcode 7.3.1

  1. В Xcode> Настройки> Редактирование текста

    снимите отметку Enable type-over completions

  2. перезапустить Xcode


14

Кажется, что снятие флажка «Разрешить завершение набора текста» в XCode -> Настройки -> Редактирование текста помогает. По крайней мере, в моем случае автозаполнение вернулось к своего рода старому способу, поэтому оно могло автоматически заполнять имя класса, которое мне приходилось вводить вручную до этого.


Пробовал, но все еще не завершает имена классов должным образом.
Erik B

Я не вижу разницы. Все еще нужно закончить кастомные имена ... :(
matthewfx

Чтобы это работало, вам необходимо включить индексацию. Чтобы включить индексирование, вы не можете сделать это из Xcode. Вы должны выполнить следующую строку в оболочке. Затем перезапустите Xcode. % defaults delete com.apple.dt.Xcode IDEIndexDisable см. stackoverflow.com/questions/7328041/…
andrewz

5

Это ни в коем случае не подходящее решение, НО оно позволило мне (едва) сохранить рассудок в последние несколько дней: после каждой сборки вам нужно удалять папку с производными данными. Вы можете найти эту папку в Xcode > Preferences > Locations > Derived Data. Просто выбросьте все это в мусор, и он запустит шаг переиндексации, который должен восстановить правильную функциональность автозаполнения. К сожалению, я обнаружил, что после сборки поведение автозаполнения возвращается в свое неработающее состояние.


4

просто откройте папку с производными данными Xcode и удалите папку

/Users/yourUserName/Library/Developer/Xcode/DerivedData

затем перезапустите Xcode, теперь автозаполнение работает как шарм


Это сработало для меня, я не знаю, почему это отрицательно оценено.
Mike M

1

У меня сложилось впечатление, что некоторые «части» автозаполнения через некоторое время просто перестают работать. Я использую для перезапуска Mac, чтобы он снова заработал. Но иногда это снова выходит из строя. Возможно, ответ @Alex Bykov в сочетании с перезапуском поможет.

В любом случае: автодополнение Xcode всегда было хренью. AppCode использовался, чтобы сделать это намного лучше. К сожалению, еще не с быстрым.


1

Закрыл Xcode, открыл Xcode, дал индексировать, заработало.


1
К сожалению, это единственный вариант.
thedp

0

он не находит имя класса

В качестве обходного решения вы можете попробовать нажать несколько раз Command + Shift + K и Command + B, это временно работает.


1
Сделал Cmd + Shfit + K (Clean), Cmd + Shfit + Opt + K (Clean Build Folder), закрыл Xcode, удалил ~/Library/Developer/Xcode/DerivedData, перезагрузил OS X, и это все равно не помогло. :-)
TaylanUB 06

1
У нас есть довольно большой проект, который скомпилируется с нуля за 20 минут, поэтому очистка и перестройка не подходят для нас ...
longbow

0

Xcode 7.3.1

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

Надеюсь, это кому-то поможет!


0

Попробовав разные методы:

  • Удалить производные данные
  • Включение модуля в настройках сборки
  • Полная очистка
  • Перезапуск

Только это сработало:

  • Найдите в файлах закомментированный (/ * abc * /) код после @end и удалите.

Кредит для Max_B: https://forums.developer.apple.com/thread/7439

В моем случае другие проекты автоматически завершались правильно. Если все ваши проекты не могут правильно предсказать код, это может быть другая проблема, и другие ответы могут сработать.


-1

Я столкнулся с этой проблемой при попытке создать приложение для OS X, и я смог исправить эту проблему, убедившись, что документация Xcode 7.3 и документация OS X 10.11.4 действительно загружены. Это полностью восстановило мою функцию автозаполнения. Мои полные инструкции приведены ниже, а также в моем ответе на аналогичный вопрос: https://stackoverflow.com/a/39420664/3444925

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

Перейти к Xcode -> Preferences -> Components. Там вы, вероятно, найдете экран, который выглядит следующим образом:

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

Это показывает, что документация не была загружена, и, следовательно, любые попытки переиндексировать или пересобрать приложение без загрузки документации не позволят вам использовать функцию автозаполнения.

Как только я загрузил документацию Xcode 7.3 и документацию OSX 10.11.4, этого было достаточно для меня, чтобы вернуть функцию автозаполнения (я пытался создать приложение для OS X, поэтому не стесняйтесь загружать столько документации, сколько вам нужно. ).


Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему. Всегда указывайте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или постоянно отключен.
pableiros

Я просто добавил здесь свой полный ответ как цитату из блока @pableiros
jkunzika

-1

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

ИСПРАВЛЕНИЕ (для меня) - мне пришлось добавить эти файлы ко ВСЕМ моим целям, включая цели модульного тестирования, хотя я их еще не использовал.

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