Ответ 1
Чтобы исправить это, я вручную перенес все мои файлы и настройки в новый проект xcode. Ничего более не работало. Вероятно, есть лучшее исправление, но я не мог больше тратить время на его поиск.
Я обновил свой проект до Swift 2 в Xcode 7 beta (7A120f) и получил эту ошибку при попытке po self в командной строке lldb:
предупреждение: ошибка Swift в модуле myApp:
У Swift были фатальные ошибки, которые строили контекст ast для этого модуля: невозможно загрузить базовый модуль для 'UIKit' Отладочная информация из этого модуля будет недоступна в отладчике.
Затем я остаюсь с искалеченным отладчиком (без значений). Это происходит независимо от того, где я размещаю точку останова. Я пробовал:
Я могу создать новый проект и увидеть в нем вывод отладки, так что это, вероятно, имеет отношение к тому, как мой проект был перенесен с помощью xcode.
Что такое контекст ast и как его исправить?
Изменить: ast - это абстрактное дерево синтаксиса. По-прежнему не знаю, как это исправить.
Чтобы исправить это, я вручную перенес все мои файлы и настройки в новый проект xcode. Ничего более не работало. Вероятно, есть лучшее исправление, но я не мог больше тратить время на его поиск.
У меня такая же проблема в моем проекте. Ошибка, вызванная 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 к моменту выхода из бета-версии.
Проверьте свой заголовок моста, и если у вас есть
@import Crashlytics;
(или любые другие фреймворки, которые вызывают ошибку. В моем случае это было GoogleMobileAds
)
попробуйте заменить
#import <Crashlytics/Crashlytics.h>
У меня была такая же проблема. В большинстве случаев эти проблемы возникают при использовании objective-c фреймворков или библиотек в проекте Swift.
Проблема была устранена путем импорта objective-c фреймворков или библиотек только в Bridging-Header.
#import <SampleFramework/SampleFramework.h>
и удалите весь импорт этой структуры из файлов Swift.
import SampleFramework // <-- Remove it
Затем очистите и создайте.
Убедитесь, что вы выполнили эту процедуру для всех фреймворков или библиотек objective-c в ваших проектах.
Надеюсь, это поможет!