Une tentative d'impression d'objet (commande po
) dans xcode 6 beta 6 OSX Swift project aboutit à ce message d'erreur:
(lldb) po managedObject
error: Error in auto-import:
failed to get module '__ObjC' from AST context
Dans ce cas, l'objet en question est une instance de NSManagedObject
.
Tout conseil sur la façon d'aider l'importation automatique pour obtenir __ObjC module
dans le contexte de l'arbre de syntaxe abstraite LLVM?
À partir de Xcode 6.1, si vous essayez deux fois la commande po, cela fonctionnera à la deuxième tentative. La première commande po échouera toujours pour chaque nouvelle session de débogage mais les appels suivants fonctionnent.
Avoir le même problème dans 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'
Mais vous pouvez utiliser fr v managedObject
au lieu de po managedObject
.
Je recommande de vérifier que vous avez
-D DEBUG
indicateur défini sous "Other Swift Flags" pour le schéma que vous utilisez pour déboguer. J'ai rencontré des problèmes similaires lorsque je l'avais accidentellement supprimé.
Un nettoyage de mon projet et la suppression de DerivedData
ont fonctionné pour moi.
J'ai discuté d'un message d'erreur similaire avec un ingénieur Apple lors de la WWDC2017. Il semble que ce problème puisse avoir de nombreuses causes, et je suis conscient que le mien est légèrement différent de celui décrit ci-dessus.
Mon équipe a passé des semaines à essayer de comprendre cela, et cela a fini par être un bug sur le compilateur d'Apple, que nous n'aurions jamais pu découvrir par nous-mêmes. En outre, il a une solution de contournement TRÈS facile.
Donc, c'est juste moi qui poste le correctif ici, afin de maximiser la probabilité qu'une autre personne recherche ce message d'erreur déroutant et trouve cette réponse.
Alors voilà. Dans notre cas, nous avions un projet Objective-C utilisant un mélange de frameworks Swift et Objective-C. Ce correctif pourrait s'appliquer dans des contextes légèrement différents, essayez-le.
Il se trouve qu'il y a un bug avec la façon dont les drapeaux de compilation sont agrégés à partir des frameworks et du projet, et le projet "Objective-C pur" "l'active".
Solution: ajoutez un seul fichier Swift ("Whats.Swift", ou autre) vide dans votre projet Objective-C, ce qui ne le rend plus pur-objectif-c (nouveau-> fichier-> fichier Swift, ne créez pas l'en-tête de pontage. Le fichier ne contiendra que l'importation de Foundation).