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:

  1. Dans Define Modules , choisis YES pour l'application.
  2. 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:

enter image description here


erreurs que je rencontre actuellement:

enter image description here

92
demandé sur Community 2014-10-12 21:37:47

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

  1. toute classe dont vous avez besoin pour accéder à dans le .h fichier doit être une déclaration anticipée comme ce

@class MySwiftClass;

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

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-XID_87

101
répondu bolnad 2016-05-25 21:37:27

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

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

67
répondu ikocel1 2017-07-02 07:56:03

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

44
répondu holm50 2017-12-20 10:07:33

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.

8
répondu petershine 2016-12-23 06:09:45

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.

5
répondu Josh B 2015-09-26 08:05:39

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!

1
répondu Artem Loginov 2016-06-20 13:10:21

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.

1
répondu YSR fan 2017-07-05 06:47:02

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

1
répondu Gurunath Sripad 2018-02-06 05:14:53

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.

0
répondu Claytog 2018-06-25 04:06:30