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

У Свифта были фатальные ошибки, которые строили контекст ast для этого модуля

Я обновил свой проект до Swift 2 в Xcode 7 beta (7A120f) и получил эту ошибку при попытке po self в командной строке lldb:

предупреждение: ошибка Swift в модуле myApp:

У Swift были фатальные ошибки, которые строили контекст ast для этого модуля: невозможно загрузить базовый модуль для 'UIKit' Отладочная информация из этого модуля будет недоступна в отладчике.

Затем я остаюсь с искалеченным отладчиком (без значений). Это происходит независимо от того, где я размещаю точку останова. Я пробовал:

  • очистка полученных данных
  • Продукт > Очистка
  • перезагрузка xcode
  • перезагрузка mac

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

Что такое контекст ast и как его исправить?

Изменить: ast - это абстрактное дерево синтаксиса. По-прежнему не знаю, как это исправить.

4b9b3361

Ответ 1

Чтобы исправить это, я вручную перенес все мои файлы и настройки в новый проект xcode. Ничего более не работало. Вероятно, есть лучшее исправление, но я не мог больше тратить время на его поиск.

Ответ 2

У меня такая же проблема в моем проекте. Ошибка, вызванная lldb при попытке po объекта, выделяет проблему:

(lldb)po fileURL
warning: Swift error in module <APP_NAME>:
    Swift had fatal errors constructing the ast context for this module: <module-includes>:1:9: note: in file included from <module-includes>:1:
#import "Headers/Crashlytics.h"
        ^
<APP_PATH>/Pods/Crashlytics/Crashlytics.framework/Headers/Crashlytics.h:10:9: error: include of non-modular header inside framework module 'Crashlytics'
#import <Fabric/FABAttributes.h>
        ^

Заголовок Crashlytics.h зонтика в Crashlytics.framework импортирует Fabric/FABAttributes.h, который не является частью модуля Crashlytics (т.е. не в его module.modulemap). Это Crashlytics 3.1.0, установленный с использованием CocoaPods.

Почему Xcode 7 рассматривает это как фатальную ошибку вне меня (это было всего лишь предупреждение в 6). В Xcode 6 вы можете обойти этот "немодульный заголовок", включив в настройке приложения параметр "Разрешить немодульное включение в Framework Modules" (CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES).

Мне не повезло получить бета-версию Xcode 7 для соблюдения вышеуказанного флага (rdar://22044453 < - please dup).

Единственное решение, которое я нашел, чтобы заставить отладчик работать, - удалить модуль Crashlytics. Я комментирую программы Crashlytics и Fabric, запускаю pod install, возобновляю отладку и затем переустанавливаю контейнеры перед выпуском.

Я действительно надеюсь, что это исправлено в Xcode 7 к моменту выхода из бета-версии.

Ответ 3

Проверьте свой заголовок моста, и если у вас есть

@import Crashlytics;

(или любые другие фреймворки, которые вызывают ошибку. В моем случае это было GoogleMobileAds)

попробуйте заменить

#import <Crashlytics/Crashlytics.h>

Ответ 4

У меня была такая же проблема. В большинстве случаев эти проблемы возникают при использовании objective-c фреймворков или библиотек в проекте Swift.

Проблема была устранена путем импорта objective-c фреймворков или библиотек только в Bridging-Header.

#import <SampleFramework/SampleFramework.h>

и удалите весь импорт этой структуры из файлов Swift.

import SampleFramework // <-- Remove it

Затем очистите и создайте.

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

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