nie można wydrukować obiektu („po”) w projekcie xcode6 beta 6 osx swift: (Błąd automatycznego importu: nie udało się pobrać modułu „__ObjC” z kontekstu AST)

87

Próba wydrukowania obiektu ( popolecenia) 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 moduledostępie do kontekstu drzewa składni abstrakcyjnej LLVM?

Maxim Volgin
źródło
Mam ten sam problem, nie mogę nawet po self w viewController. Nie mam pojęcia, skąd to się bierze ani jak to rozwiązać
BObereder
1
Nadal mam ten sam problem w wersji beta 7.
weiran
2
użyj print zamiast po
ant_one
2
Zamiast używać wyrażenia, czy spróbowałeś zmiennej ramki managedObject ?
vladof81,
5
zmienna ramki 'działa' (tak samo jak skrót fr v ). W moim przypadku my ' manageObject ' to JSON w słowniku za pośrednictwem AFNetworking. Chciałbym zobaczyć w słowniku coś takiego jak managedObject ['klucz'] . To nie działa z fr v .
Zak J

Odpowiedzi:

24

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ą.

Robert Wagstaff
źródło
to samo tutaj, to się
zawiesiło
7
To już nie działa dla Xcode 7 ... wciąż ta sama awaria
Bartłomiej Semańczyk
4
Przy drugiej próbie otrzymuję:error: The AST context is in a fatal error state.
yujean
7

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 managedObjectzamiast po managedObject.

Aleksandra Daniłowa
źródło
3

Zalecam podwójne sprawdzenie, czy masz plik

-D DEBUG

flaga ustawiona w obszarze „Inne flagi Swift” dla schematu, którego używasz do debugowania. Miałem podobne problemy, gdy przypadkowo go usunąłem.

gemmakbarlow
źródło
1

Porządkowanie projektu i usuwanie DerivedDatazadziałało.

Nico
źródło
1

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).

fredericouimet
źródło