Автоматичне завершення Xcode 9 не працює 100% - частково працює


121

Сьогодні вранці в Xcode 9.0 (9A235) показано нове / дивне поле автоматичного завершення, яке зовсім не таке, як раніше. Як отримати повне автоматичне заповнення вікна, щоб автоматичне заповнення виглядало як зазвичай це робиться?

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


1
Видалення папки DERIVED DATA вирішило це для мене. Дякую черговій публікації. Завдяки цьому допису: stackoverflow.com/questions/28429630/…
Ерні

Можливо, це тому, що індексація ще не завершена.
озгур

1
Перепробував кожне запропоноване рішення, і нічого не допомогло в одному з моїх проектів 🙁
Олександр Васенін

3
11.3 - катастрофа щодо цього питання. Часто просто перезапуск Xcode допомагає: /
Fattie

Відповіді:


234

Спробуйте:

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

2
приголомшливе рішення. так дивно. Цікаво, як ти це повторив.
Кунал Гупта

1
Відповідь на мільйон доларів. Це навіть зафіксувало "Перейти до визначення".
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 для кожного класу властивостей і функцій, які ви можете зменшити в обсязі роботи компіляторів на кожен елемент.

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

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


З XCode 9.2 більше немає символу стрілки до папки отриманих даних. Дякуємо за пораду fileprivate. Кошмар продовжується ...
Саль

Я все ще бачу символ стрілки. Це було в попередній версії 9.2 чи щось таке?
Сетмр

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

Це для мене працює: Вийдіть з Xcode, видаліть 2 папки, як ви вже сказали, перезапустіть Xcode і всі проблеми, що минули: D
phuongzzz

20

Це може статися, коли файл не є членом Цілі. Відкрийте файл, де функція автозаповнення не працює, і покажіть вкладку «Утиліти» у верхньому правому куті Xcode (синій на скріншоті нижче). Знімок екрана кнопок подання праворуч Xcode

Знімок екрана параметрів членства Xcode

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

Якщо це вже встановлено, зніміть його та повторіть його ще раз. Для мене це зробило трюк.


тільки відкриття цієї сторінки та закриття працювали. Я збентежений. Спасибі, btw.
Охан Окбай

Він працював на xcode 10. Файл справді вже був членом цілі. Мені довелося зняти перевірку, а потім перевірити її ще раз, чи визнано її такою.
Jim75

це сталося зі мною після злиття git, я думаю, одна гілка написала мій поточний файл проекту, а інша неправильно об'єдналася в це.
Асфанд Шаббір

11

Я використовую Xcode 10.2, і у мене була та сама проблема.

Ця відповідь від axel допомогла мені виправити.

У будь-якому випадку я розповім трохи більше:

  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. Перейменування файлу виправлено це. Спасибі
Рем-Д


5

Спробуйте зробити це:

Виберіть файл >>, перевірте, чи доданий файл до цілей UITesting або UnitTesting (Інспектор файлів -> Цільове членство) . Якщо так, зніміть прапорці з цих двох і переконайтесь, що вибрано лише ціль проекту. Потім складіть і спробуйте, якщо автозаповнення працює нормально.

Це працювало для мене. Сподіваюся, це допоможе комусь.


4

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


4

Ось трохи вирішення, але працює.

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

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

  3. Видалити отримані дані для проекту ... Це можна зробити за допомогою цього посилання:

    Як я можу видалити отримані дані в Xcode 9?

  4. Закрити XCode.

  5. Повторно відкрити XCode (нехай завершення індексації) та побудувати проект ... Command + B

Як тільки це буде зроблено зі створенням, пропозиції повернуться. Я пробував це вже двічі.

Оновлення:

Іноді проблема може бути такою ж простою, як і копії імен файлів. Уважно перевірте, чи додані вами нові імена файлів суперечать старішим файлам.

У Xcode 11.4, навіть якщо ви перемістите існуючий файл до іншої групи, пропозиції зникають. Це можна вилікувати, просто перезавантаживши Xcode.


3

Я додав тут те, що відбувалося в моєму проекті, на випадок, якщо він може допомогти комусь іншому ... У мене було 2 файли з такою ж назвою, і я не усвідомлював.


2

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

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


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

2

Здається, у моєму випадку конкретний файл (Xcode 9.2). Для мене виправлення було таким:

  1. Видалити файл проблеми (видалити посилання)
  2. Очистити та побудувати
  3. Додати файл в проект (я не перевіряв тестові цілі)
  4. Будуйте заново

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


2

Проблеми здебільшого тому, що в навігаторі проектів відсутнє розташування деяких файлів (помилки побудови)

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

Або ви можете:

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

Сподіваюся, це допомагає



2

Для Xcode 11.4 (11E146)

Назад Нарізати косу риску в назві папки, що порушує функцію автозаповнення. Якщо це так, видаліть її та складіть заново.

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


1

Для мене це відбувалося в моєму тестовому файлі, оскільки воно чомусь не було частиною цілі. Встановлення цільового членства вирішило проблему.


1

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

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

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

Сподіваюся, це допоможе комусь зекономити 30 хвилин :)


Дивіться мою відповідь з причини, чому.
Джеймс Буш

@ponury, я не розумію ... Другий абзац OP - це рішення, ні?
brasofilo

1

Використовуйте Command + B
або Command + R для Будувати або Run проект
Xcode іноді плутає;)


1
  1. перевірте, чи вибрано Suggest completions while typingв Xcode -> Preferences -> Edit Editing
  2. перейдіть до користувача-> Бібліотека-> Розробник-> 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 нова система складання, схоже, не сподобається, і вона автоматично завершиться лише в тому випадку, якщо ви її використовуєте Releaseабо Debug. Будь-яка спеціальна конфігурація збірки порушує автоматичне завершення в змішаному (swift + objc) проекті з тестовими одиницями.


0

Це Посилання мені допомогло. Відкрийте Налаштування збірки та заповніть рамки пошуку шляхів. Дивіться зображення нижче.

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



0

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

Тож я не здивувався, використовуючи кодеген старого стилю, жоден (і генеруючи класи звичайно) проблему не виправив негайно, навіть не перезавантажуючи xcode.

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


0

З Xcode 11.1 просто виконання Clean Build Folderабо видалення отриманих даних було недостатньо для виправлення автозаповнення.

Лише після перезавантаження мого Mac все повернулося до норми


0

Якщо у вас виникли проблеми зі дивним завершенням / автоматичним доповненням / інтелігенцією (не відображаються за замовчуванням речі, такі як делегати та методи протоколів джерел даних), просто змініть свою ціль (наприклад, з імітатора 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.