Xcode не может сгенерировать Swift представление для моей собственной платформы

Я создал фреймворк, который хочу использовать в своем приложении для OS X. С момента обновления до Xcode 7 на El Capitan, когда я пытаюсь командным нажатием на import Заявление, Xcode переходит к следующему представлению.

Как я могу заставить Xcode правильно отобразить представление Swift? У меня было это раньше, и мое решение было воссоздать каждый файл проекта, который я не хочу делать снова.

9 ответов

Решение

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

/Users/{user}/path-to-framework-parent-directory

или относительно каталога проекта:

$(PROJECT_DIR)/path-to-framework-parent-directory

Другой возможной причиной является то, что путь к вашей среде содержит пробел. Я обнаружил, что не имеет значения, пытаетесь ли вы избежать его с помощью обратной косой черты ../Project\ Name/frameworks или взять весь путь в двойных кавычках "../Project Name/frameworks", В результате SourceKit не сможет загрузить модуль.

Обратите внимание, что $(PROJECT_DIR) может расшириться до пути с пробелом в нем, и это также приведет к той же ошибке. Так что это похоже на ошибку в Xcode/SourceKit (я попробовал последнюю версию Xcode 7.2-beta3, и ошибка все еще есть).

Мой репозиторий был на втором жестком диске /Voluems/Macintosh HD/Repos, Я просто переименовал жесткий диск в HDтак путь выглядит /Volumes/HD/Repos и проблема исчезла.

Ответ Max S. указал мне верное направление, однако я использовал опцию 'recursive' для моего пути к структуре.

Чтобы все заработало, мне пришлось явно добавить путь непосредственно к рассматриваемому фреймворку непосредственно родительской директории (вместо того, чтобы просто указывать путь к одному из его более высоких каталогов с установленным параметром 'recursive').

НТН

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

Имя цели также не может содержать пробел

Чтобы переименовать это:

  • Зайдите в настройки вашего проекта
  • Разверните столбец списка целей слева, если его там еще нет
  • Нажмите на соответствующую цель один раз (или нажмите Enter или Tab при ее выборе) и введите новое имя без пробела

Странно, но просто изменив имя моей папки с "Разработчик" на "Разработка", я решил эту проблему.

Запуск Product->Clean, Product->Build - это то, что сработало для меня.

В моем случае проблема заключалась в том, что не удалось найти структуру. Благодаря предложению @Max S. я добавил родительский каталог платформы в пути поиска платформы , а затем очистил папку сборки Product > Clean Build Folder . Но проблема все еще существовала. Я попытался полностью удалить папку «Производные данные Xcode» , но ничего не получилось. Итак, после нескольких других неудачных попыток я перезапустил Xcode , и произошло волшебство, проблема исчезла.

Поэтому, если шагов, указанных @Max S., недостаточно, попробуйте также перезапустить Xcode.

Попробуйте, изменив целевое устройство. Вместо того, чтобы выбирать физическое устройство, выберите симулятор. Затем попробуйте использовать действие «команда-щелчок», чтобы открыть документацию в Xcode.

В моем случае я создал фреймворк для своего SDK вместе с podspec, чтобы сделать его какао-стручком.

У меня была такая же проблема, когда я использовал свой SDK, и она исправлена, когда я импортировал Foundation API в файл, в котором я использую свой SDK.

import Foundation

Вот еще одно потенциальное решение, которое сработало для меня:

После импорта фреймворка я никогда не строил для симулятора, только для реальных устройств. Модули Swift не отображались, та же ошибка. Затем я создал для Simulator, и он внезапно сработал, я увидел модули Swift.

Причина в том, что когда я создаю свой фреймворк, у меня есть шаг, который копирует быстрые модули из iphonesimulator build в универсальную сборку, но ничего не делает с модулями из iphoneosпостроить. Я предполагаю, что именно поэтому это не сработало.

Примечание: как только я выбрал симулятор и построил его, он начал работать все время, независимо от места назначения сборки.

Другие вопросы по тегам