Подтвердить что ты не робот

@import вызывает проблему синтаксического анализа: "невозможно создать модуль"

После обновления с помощью Xcode 6.3 я нашел что-то странное с моими проектами.

Ниже кодов возникает проблема синтаксического разбора, в которой говорится: "Не удалось построить модуль" Повестка дня "," Повестка дня "- это моя собственная встроенная инфраструктура для ios8:

@import MyEmbededFramework;

Маркер ошибки выглядит следующим образом:

error

Проблемы возникают при индексировании, а не в создании. Полное здание может быть успешно выполнено без каких-либо ошибок или предупреждений. Я могу создавать, архивировать, запускать на устройстве, развертывать, отправлять в App Store.

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

В этом состоянии я не мог получить никакого действительного помощника контента, очень раздражающего.

После замены оператора import старым стилем проблема исчезла:

#import <AgendaFramework/AgendaFramework.h>

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

Я пробовал:

  • Удалить производные данные
  • Полная очистка
  • Reboot

Любые подсказки приветствуются. Спасибо!

4b9b3361

Ответ 1

Похоже на включение:   Разрешить немодульное включение в модульные модули решить эту проблему для меня.

Ответ 2

Иногда эту проблему можно решить с помощью добавления фреймворка в ту же папку, что и файл .xcodeproj, никаких подпапок или чего-либо еще.

Кредиты Jonny, которые указывают на это как комментарий в вопросе.

Ответ 3

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

Change from "project" to "public"

Ответ 4

Решение, которое сработало для меня: усердие в ориентации файла заголовка рамки на импорт стиля системы... например #import <CoreXLib/CoreThreads.h> история:

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

Когда я построил свою инфраструктуру CoreXLib, я преобразовал ее в Cocoa Framework, типичную для Xcode. Я изменил свой импорт:

    #import "CoreTypeAliases.h"    // project local style   

к

    #import <CoreXLib/CoreTypeAliases.h>    // system or framework style

соответственно. Несколько проектов, которые использовали CoreXLib.framework, который включал публичные заголовки в lego-папке, работали... поэтому я подумал, что мне хорошо...

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

Итак, после поиска этой темы и нахождения решения @kwz, и не имея в ней ничего, я решил отполировать код, пока я пытался понять эту проблему. В полировке я обнаружил, что некоторые из #imports не изменились, как они должны быть в поиске Xcode и заменены. Время для ручных задержек...

После исправления всех этих ссылок во всех моих заголовочных файлах CoreXLib (а не только для публичных, для самозащиты) я вернулся к проблеме... Я взял вновь обработанную CoreXLib.framework на ошибочный проект, вложил его... и проблема исчезла! Я проверил Allow Non-modular Includes... как в рамках проекта, так и в проекте, который связал структуру, и оба были "Нет". Отбрасывание как "Да", так и "Нет" не имело никакого значения в нескольких тестах. Единственным другим изменением были модификации #import "..." to #import <CoreXLib/...>.

Поэтому иногда полировка яблока 🍎 сбивает ошибки...

Ответ 5

Сегодня я решил эту проблему этими шагами:

  • Выберите схему "MyEmbededFramework"
  • Нажмите [Command + B], чтобы создать
  • На панели фазы сборки добавьте "MyEmbededFramework.framework" для связывания двоичных файлов с библиотеками.

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

Ответ 6

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

Ответ 7

Отключите модуль в настройках сборки. Это может работать