D'importation dans le Cadre Swift Projet Xcode
Je suis en train d'importer myFramework
dans un projet. J'ai ajouté myFramework
dans les Phases de construction->Lien Binaire Avec les Bibliothèques.
Objective-c:
#import <UIKit/UIKit.h>
#import <myFramework/myFramework.h>
Mais avec Swift, je reçois un No such module myFramework
erreur:
import UIKit
import myFramework
Selon la Swift documentation:
Importer Des Cadres
Vous pouvez importer externe des cadres qui ont un pur Objective-C
base de code, un pur Swift code, ou une langue mixte de la base de code. L'
processus pour l'importation d'un cadre externe est le même que l'
le cadre est rédigé dans une seule langue ou contient des fichiers à partir de deux
les langues. Lorsque vous importez un cadre externe, assurez-vous que le
Définit le Module de paramètre de construction pour le cadre que vous importez est réglé
Oui.Vous pouvez importer un cadre en toute Swift fichier dans un autre
cible à l'aide de la syntaxe suivante:SWIFT
import FrameworkName
Vous pouvez importer un cadre en Objective-C .m fichier à l'intérieur d'une cible différente en utilisant les éléments suivants
syntaxe:OBJECTIVE-C
@import FrameworkName;
J'ai créé myFramework
à l'aide de Xcode 5. Xcode 5 n'ont pas de "Définit le Module" paramètre de construction.
Où est le problème?
- Dans mon projet, je suis un lien avec Apple SpriteKit.cadre que vous avez décrite, et je suis en mesure d'utiliser la totalité de Sprite Kit de classes, puis d'importer le cadre de la swift classe à l'aide de: importer SpriteKit
- Xcode 5 ne vous autorise pas à
@import
non-cadres du système. Il est disponible depuis Xcode 6. - Quelle est la bonne réponse suivante dans votre code?
- cette solution a fonctionné pour moi stackoverflow.com/a/37328591/1084174
Vous devez vous connecter pour publier un commentaire.
Si je reçois de vous correctement, vous n'avez pas de cible de construction pour votre cadre (vous avez déjà construit avec XCode 5) et inclus dans le cadre de votre projet de construction de la cible.
La partie de la documentation que vous faites allusion à l'est sur des cadres au sein de différents cibles.
Depuis votre cadre est dans la cible du projet cette partie de la documentation ne s'applique pas ici.
Dans votre cas, vous ne pouvez pas faire une importation du cadre de votre Swift fichier. C'est pourquoi vous obtenez le message d'erreur "un tel module myFramework".
myFramework est pas un module, c'est une partie de votre module du projet (qui est par défaut déterminé par le nom de votre produit). En tant que tel, les classes dans votre cadre devrait être accessible.
Cependant votre cadre est écrit en Objective-C. Donc, ce que vous avez à faire est d'importer rapidement face à des cours à pont-d'en-tête comme décrit ici.
Veuillez noter que cela n'a rien à voir avec la Swift importation d'un module. La directive d'importation dans le bridging-fichier d'en-tête juste en informe le compilateur de "traduire" Objective-C fichiers d'en-tête de Swift syntaxe et rend l'en-tête public visible à Swift.
Alors, que devez-vous faire maintenant?
D'abord importer les fichiers d'en-tête qui vous intéresse dans la transition de l'en-tête. Vous avez seulement besoin d'importer les en-têtes, vous aurez à interagir avec Swift.
Essayez de compiler votre projet à ce stade. Si XCode ne pouvez pas trouver les fichiers d'en-tête de la cadre de votre problème est probablement pas lié à Swift ou XCode 6, mais un problème avec notamment des cadres en général.
Espère que cette aide.
Sur Swift:
Créer Un Cadre:-
Commencer Xcode -> Créer un nouveau Projet Xcode -> iOS -> Cadre & Bibliothèque -> Cocoa Touch Cadre -> Nom de la structure(ex. sampleCocoaFramework) -> Créer.
Ensemble Cible -> Général> Déploiement info -> Cible de Déploiement.
Ajouter une classe publique: Fichier -> Nouveau Fichier -> iOS -> Swift Fichier -> Nom (ex. openCocoaClass) -> Créer.
Maintenant ajouter un peu de code pour le openCocoaClass.swift.
}
Nettoyer le projet : Produit -> Nettoyer
Configurer les paramètres de jeu : Produit -> Système -> Modifier le Système -> Exécuter -> Configuration de Build -> Libération.
Construire le cadre : Produit -> Build.
Ajoutant Cadre du Projet:-
Démarrer un projet Xcode et le nom (ex. CocoaFrameworkTest).
Faites glisser et déposez les sampleCocoaFramework.cadre de la CocoaFrameworkTest du dossier de projet.
Cible -> Général> Intégrer les Binaires -> Ajouter d'Autres -> Select Cadre
-> Copier des Éléments si nécessaire -> Fait.
Accéder Cadre sur ViewController:-
Selon la Swift documentation
Aussi, assurez-vous que le "Définit le Module" paramètre de construction en vertu de "l'Emballage" est réglé sur "Oui".
vous avez besoin dans votre c objectif du projet public-tête avec le même nom de votre application, dans votre cas FrameworkName.h et ajouter toutes les classes que vous souhaitez exposer (ces classes doit être ajouté comme en-tête public dans les propriétés du projet)
Une fois que vous faites cela, vous ajoutez le cadre et ajouter la référence à votre public d'en-tête d'importation FrameworkName
Vous pouvez importer externe objC cadre swift projet à l'aide de la syntaxe suivante:
#import "objCExternalFramework-name/headerfilename.h"
Bon, c'est Xcode 7.2 maintenant. Et ce que j'ai observé est, swift importation est sensible à la casse. Exemple -
import uikit
ne fonctionnera pas. Vous aurez à taper commeimport UIKit
.juste mes deux cents.
Dernier XCode fournit l'option pour intégrer dans le cadre d'autres projets.
Ce lien (https://stackoverflow.com/a/37328591/1084174) a bien fonctionné pour moi.
Juste c
ommand+B
permettrait de!Le pourquoi:
Ajout le cadre de
Cocoapods
va créer un autre pod projet avec des cadres en elle. Pour le projet principal d'identifier les cadres, les bibliothèques statiques de deux les projets doivent être comblé. La construction de l'espace de travail est nécessaire pour que cela arrive.