невозможно напечатать объект ('po') в проекте xcode6 beta 6 osx swift: (Ошибка при автоматическом импорте: не удалось получить модуль '__ObjC' из контекста AST)

87

Попытка распечатать объект ( poкоманду) в проекте OSX Swift xcode 6 beta 6 приводит к следующему сообщению об ошибке:

(lldb) po managedObject
error: Error in auto-import:
failed to get module '__ObjC' from AST context

В этом случае рассматриваемый объект является экземпляром NSManagedObject.

Любые советы о том, как помочь автоматическому импорту попасть __ObjC moduleв контекст абстрактного синтаксического дерева LLVM?

Максим Волгин
источник
У меня такая же проблема, я даже не могу использовать viewController. Я понятия не имею, откуда это
взялось
1
У меня все еще та же проблема в бета-версии 7.
weiran
2
используйте print вместо po
ant_one 08
2
Вы пробовали использовать переменную кадра managedObject вместо выражения ?
vladof81 08
5
переменная фрейма работает (как и сокращение fr v ). В моем случае мой « manageObject» - это JSON в словаре через AFNetworking. Я бы хотел увидеть в словаре что-то вроде managedObject ['key'] . Это не работает с fr v .
Zak J

Ответы:

24

Начиная с Xcode 6.1, если вы дважды попытаетесь выполнить команду po, она будет работать со второй попыткой. Первая команда po всегда будет терпеть неудачу для каждого нового сеанса отладки, но последующие вызовы работают.

Роберт Вагстафф
источник
То
7
Он больше не работает для Xcode 7 ... все тот же сбой
Бартломей Семанчик
4
Со второй попытки я получаю:error: The AST context is in a fatal error state.
yujean
7

Есть такая же проблема в xcode 7.3.1:

error: Error in auto-import:
failed to get module 'Touch' from AST context:
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h"
        ^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/libxml2/libxml/tree.h:17:10: error: 'libxml/xmlversion.h' file not found
#include <libxml/xmlversion.h>
         ^
could not build Objective-C module 'LibXML2'

Но вы можете использовать fr v managedObjectвместо po managedObject.

Александр Данилов
источник
3

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

-D ОТЛАДКА

флаг установлен в разделе «Другие флаги Swift» для схемы, которую вы используете для отладки. У меня возникли аналогичные проблемы, когда я случайно удалил его.

геммакбарлоу
источник
1

Очистка моего проекта и удаление DerivedDataсработали для меня.

Нико
источник
1

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

Моя команда потратила недели, пытаясь понять это, и в итоге это оказалось ошибкой в ​​компиляторе Apple, которую мы никогда не смогли бы решить сами. Кроме того, у него есть ОЧЕНЬ простой обходной путь.

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

Итак, вот оно. В нашем случае у нас был проект Objective-C, использующий смесь фреймворков Swift и Objective-C. Это исправление может применяться в немного разных контекстах, просто попробуйте.

Произошла ошибка в способе агрегирования флагов компиляции из фреймворков и проекта, и проект «чистый Objective-C» «активирует» его.

Решение: добавьте один пустой файл Swift («Whatever.swift» или что-то еще) в свой проект Objective-C, сделав его не-pure-objective-c больше (new-> file-> Swift file, не создайте заголовок моста (файл будет содержать только импорт Foundation).

Fredericouimet
источник