Projet D'Importation-Swift.h en Objective-C classe...fichier non trouvé
j'ai un projet qui a été lancé dans Objective-C, et j'essaie d'importer du Code Swift dans les mêmes fichiers de classe que j'ai écrit précédemment dans Objective-C.
j'ai consulté L'Apple docs sur L'utilisation de Swift et Objective-C dans le même projet, ainsi que question comme ceci, mais toujours pas de résultat: je continue à obtenir le fichier n'a pas trouvé d'erreur après avoir mis dans #import "NewTestApp-Swift.h"
( NewTestApp
est le nom du produit et du module).
Voici ce que j'ai fait jusqu'à présent:
- Dans
Define Modules
, choisisYES
pour l'application. - veillait à ce que le nom du Module produit n'ait pas d'Espace (voir la capture d'écran ci-dessous)
j'ai essayé d'utiliser #import "NewTestApp-Swift.h"
à l'intérieur de ViewController.m
, ViewController.h
et AppDelegate.m
mais aucun d'eux n'a fonctionné.
Qu'est-ce que je fais d'autre de travers? Merci pour votre aide.
Capture d'écran des paramètres:
erreurs que je rencontre actuellement:
9 réponses
j'ai rencontré le même problème et je n'ai pas pu obtenir mon projet d'importer swift dans les classes obj-C. En utilisant Xcode 6, (devrait fonctionner pour Xcode 6+) et a pu le faire de cette façon....
- toute classe dont vous avez besoin pour accéder à dans le .h fichier doit être une déclaration anticipée comme ce
@class MySwiftClass;
- Dans le .m fichier SEULEMENT si le code est dans le même projet (module) puis vous devez l'importer avec
#import "ProductModuleName-Swift.h
lien vers la documentation apple la concernant
si le code Swift est à l'intérieur d'un Module (comme dans votre cas):
#import <ProductName/ProductModuleName-Swift.h>
si le code Swift fait partie du projet (mixte Swift et ObjC):
#import <ProductModuleName-Swift.h>
Dans votre cas, vous devez ajouter cette ligne dans le fichier *.m fichier:
#import <NewTestApp/NewTestApp-Swift.h>
IMPORTANT: regardez le" < "dans la déclaration d'importation
comment j'ai pu importer swift dans l'objectif-c:
- Définit le Module réglé sur OUI (sur projet pas sur la cible)
- Produit Nom du Module ensemble (sur cible - et non pas sur le projet)
-
dans votre ViewController.m importer le code swift avec:
#import "MyProductModuleName-Swift.h"
- Ajouter un fichier swift à votre objectif-c project (File - > New- > Swift) et Xcode vont créer l'en - tête de pont de objective-c à Swift mais c'est crucial pour le faire fonctionner dans l'autre sens aussi-apparemment.
pour la dernière pièce de ce puzzle merci à Swiftoverload pour m'avoir fait prendre conscience de l'ajout d'un fichier Swift via Xcode GUI et pas seulement de glisser et déposer des fichiers swift existants dans mon projet pour le faire fonctionner: http://nikolakirev.com/blog/using-swift-in-objective-c-project
utilisant Xcode 8.2.1 et si vous regardez projet > paramètres de construction > Objectif-C Nom D'en-tête D'Interface généré , il affiche un seul fichier d'en-tête nommé comme produit - Swift.h
cela signifie qu'au lieu d'importer chaque module séparément de L'objectif-C.m fichier, en utilisant individu-Swift.h fichier, vous venez d'importer un produit -Swift.h qui regroupait tous les modules Swift.
j'ai rencontré le même problème en cherchant la façon traditionnelle d'importer les modules séparément, mais la version actuelle de Xcode et Swift 3 l'a modifié pour utiliser un seul en-tête pour toutes les importations de modules.
j'avais des problèmes pour importer Swift dans un projet objectif-C. À la fin, j'ai regardé dans le dossier de données tourné en dérision pour vérifier ce que Xcode 7 générait. Le nom du fichier était complètement différent de celui que j'attendais.
une fois que j'ai eu le nom du fichier que j'ai importé et que le projet a pu construire.
avait eu le même problème avec mon équipe lorsque je travaillais sur le projet en utilisant git. Un développeur n'a pas mis à jour Xcode à la dernière version (7.3) qui était requise pour la dernière version de Swift 2.2. Ainsi, le compilateur n'a pas reconnu la nouvelle syntaxe Swift et n'a pas pu générer d'interface pour la bibliothèque Swift (projectname-swift.h.) Vérifiez si la version Xcode est la dernière!
DÉFINIR LES MODULES: OUI et importer " ProjectName-Swift.h".m fichier de la classe Obj-C
cela a fonctionné pour moi d'accéder aux classes Swift dans Obj-C.
pendant le développement, il pourrait y avoir une possibilité que vous ayez n'importe quelle classe swift qui n'est pas complètement implémentée en raison de laquelle il pourrait y avoir des erreurs de syntaxe. Le fichier d'en-tête swift ne sera disponible que si tous les fichiers swift sont exempts d'erreur.
s'assurer qu'il n'y a pas d'erreurs de syntaxe dans les fichiers swift et ensuite essayer d'importer l'en-tête swift dans le fichier objectif - c
importation du fichier d'en-tête, i.e.
#import "<ProjectName>-Swift.h"
dans le .le fichier h a généré une erreur, indiquant:
- Swift.h " fichier non trouvé
et la construction a échoué.
au lieu d'utiliser:
#import "<ProjectName>-Swift.h"
dans le .m fichier, et même si la même erreur apparaît, exécuter le projet supprime de toute façon l'erreur.
La swift les cours sont alors disponibles à l'intérieur de la .m de fichier.