Próba wydrukowania obiektu ( po
polecenia) w projekcie xcode 6 beta 6 OSX Swift powoduje wyświetlenie tego komunikatu o błędzie:
(lldb) po managedObject
error: Error in auto-import:
failed to get module '__ObjC' from AST context
W tym przypadku dany obiekt jest instancją NSManagedObject
.
Jakieś porady, jak pomóc w automatycznym imporcie w __ObjC module
dostępie do kontekstu drzewa składni abstrakcyjnej LLVM?
Odpowiedzi:
Począwszy od Xcode 6.1, jeśli spróbujesz dwukrotnie wykonać polecenie po, zadziała ono przy drugiej próbie. Pierwsze polecenie po zawsze kończy się niepowodzeniem przy każdej nowej sesji debugowania, ale kolejne wywołania działają.
źródło
error: The AST context is in a fatal error state.
Mają ten sam problem w 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'
Ale możesz użyć
fr v managedObject
zamiastpo managedObject
.źródło
Zalecam podwójne sprawdzenie, czy masz plik
flaga ustawiona w obszarze „Inne flagi Swift” dla schematu, którego używasz do debugowania. Miałem podobne problemy, gdy przypadkowo go usunąłem.
źródło
Porządkowanie projektu i usuwanie
DerivedData
zadziałało.źródło
Omówiłem podobny komunikat o błędzie z inżynierem Apple podczas WWDC2017. Wygląda na to, że ten problem może mieć wiele przyczyn i jestem świadomy, że mój jest nieco inny niż opisany powyżej.
Mój zespół spędził tygodnie, próbując to rozgryźć, i skończyło się to błędem w kompilatorze Apple, którego sami nigdy nie moglibyśmy znaleźć. Ponadto ma BARDZO łatwe obejście.
Tak więc, to tylko ja publikuję tutaj poprawkę, aby zmaksymalizować prawdopodobieństwo, że ktoś inny wyszuka ten mylący komunikat o błędzie i znajdzie tę odpowiedź.
A więc oto jest. W naszym przypadku mieliśmy projekt Objective-C wykorzystujący połączenie frameworków Swift i Objective-C. Ta poprawka może mieć zastosowanie w nieco innych kontekstach, po prostu spróbuj.
Zdarza się, że występuje błąd w sposobie, w jaki flagi kompilacji są agregowane z frameworka i projektu, a „czysty” projekt Objective-C „aktywuje” go.
Rozwiązanie: dodaj jeden, pusty plik Swift („Cokolwiek.swift” lub cokolwiek) w projekcie Objective-C, dzięki czemu nie będzie już czysto obiektywny-c (nowy-> plik-> Swift plik, nie utwórz nagłówek mostkowania. Plik będzie zawierał tylko import Foundation).
źródło