Comment puis-je Créer un Cadre de Développement Dans iOS y Compris Swift?
Mon but était de créer un iOS cadre qui intègre à la fois rapide et Objective-C que je pouvais l'utiliser dans mes projets de développement. La nature de ce cadre est que le cadre lui-même est en cours de développement. Donc, il est important que chaque fois que je créer un projet à l'aide de ce cadre (je vais l'appeler projets à l'aide du cadre de "l'aide" des projets par manque d'un meilleur terme), je voulais m'assurer que le cadre lui-même a été re-construit. Je voulais que cela soit un cadre parce que j'ai un peu l'utilisation d'applications au travers de laquelle je veux utiliser le même code de la structure. J'ai eu du mal avec ce pour un bon morceau d'aujourd'hui, et perdu beaucoup de temps sur quelque chose qu'il aurait été, dans mes pensées, au moins, plus facile. Donc, je vais partager mon processus.
OriginalL'auteur Chris Prince | 2015-09-28
Vous devez vous connecter pour publier un commentaire.
La première chose à observer (ce qui n'est certainement pas ma première observation!) est que vous ne peut pas ce faire à l'aide d'une bibliothèque statique sous iOS. Xcode ne vous permettra pas d'utiliser Swift dans un cadre statique de l'Essayer. Xcode va refuser de vos souhaits!
Voici le processus que j'ai fini avec. Les deux principaux problèmes que j'ai eu à traiter avec sont: (i) en faisant Xcode lien vers le cadre de l'aide projet sans faire d'erreurs, et (ii) l'obtention de l'accès aux en-têtes de dans le cadre de l'aide projet. D'Apple dans la vue éclairée de ces deux questions sont distinctes. Notez le sarcasme. ;).
1) Créer un
Cocoa Touch Framework
à l'aide de Xcode. Je crois que cela fonctionne avec Xcode6 et Xcode7. Utilisation:M'arrive d'être en utilisant Xcode7. (Ne pas faire un
Cocoa Touch Static Library
, comme je l'ai dit ci-dessus, Xcode ne vous permettra pas d'intégrer Swift dans les bibliothèques statiques).2) Avec votre Swift classes, assurez-vous que les membres et les fonctions sont public. Je n'ai pas expérimenté, mais il semble que l'attribut public est nécessaire pour les membres et de fonctions pour être visible par les utilisateurs du cadre.
3) Ajouter ce que jamais Swift classes (et Objective-C) vous voulez de votre cadre.
4) Fermer le cadre du projet. (Le même projet ne peut pas être ouvert deux fois dans Xcode, et vous avez besoin pour intégrer le framework à l'aide de votre projet à côté).
5) Ouvrez à l'aide de votre projet dans Xcode. Pour moi, c'est un app universelle projet. Vous pourriez être la création d'un nouveau projet. Dans tous les cas, faites-le glisser .xcodeproj fichier de votre projet de cadre de, dans le Finder, dans l'aide de votre projet.
6) à l'Intérieur de l'aide de votre projet, ouvrez votre projet de cadre. Et faites glisser le cadre de fichier dans
Embed Frameworks
dans les Phases de construction (leEmbed Frameworks
l'article n'était pas présent dans les Phases de construction, lorsque j'ai commencé mes expériences, et je ne sais pas encore ce que la magie a provoqué son apparition!).Ces étapes jusqu'à présent devrait vous permettre de construire et de lien sans encore l'intégration de l'utilisation de votre code de bibliothèque.
(J'ai été en utilisant https://github.com/RadiusNetworks/swift-framework-example pour certains de mes tests).
7) Maintenant pour le coup de grâce: en Vertu de l'
Build Settings
, recherche pourFramework Search Paths
. Et d'ajouter:(Il semble que vous ne pas c'est marqué comme récursive).
8) Dans votre code Swift fichiers à l'aide du framework, vous devez ajouter une importation en haut de chaque fichier:
Vous devriez maintenant être en mesure de construire et de lien en utilisant votre nouvelle bibliothèque!
9) Une plus gotcha: assurez-vous que votre
Deployment Target
pour votre charpente correspondant à votre projet de destination. E. g., si votre projet s'appuie pour iOS7, assurez-vous que votre cadre s'appuie pour iOS7 ou plus tôt.10) Deuxième gotcha (10/23/15): je viens d'apprendre que c'est nécessaire pour mon cadre de "App-Swift.h" (le nom que j'utilise pour cela) que l'Objective-C Interface Généré nom d'en-Tête dans les Paramètres de construction. Quand j'ai pris cette (Objective-C Interface Généré en-Tête) (en essayant de résoudre un autre problème), j'ai plusieurs questions intéressantes à venir dans App-Swift.h. Ces questions ressembler à quelque chose comme:
"Impossible de trouver l'interface de déclaration de NSObject"?
11) Troisième gotcha (10/29/15): Quand j'ai essayé de télécharger ma première application pour iTunes Connect qui rend l'utilisation de ce Cadre, j'ai eu une erreur de téléchargement. L'erreur de lecture:
Divers, et d'autres postes ont rencontré ce genre d'erreur, et le truc pour moi c'était, pour le Cadre de la cible, dans les Paramètres de construction, à l'ensemble "Contenu Intégré Contient Swift Code" pour NON. (Mon application Paramètres de construction avait cet indicateur a la valeur N'est déjà fait).
Un exemple de projet avec la plupart de ces étapes terminées est sur https://github.com/crspybits/CocoaTouchFramework.git
Qu'entendez-vous par "faire de votre application ouvert à tous"? Comme je l'ai mentionné, cet article est dans le contexte de mes propres projets de développement. Je n'ai pas été en distribuant mes cadres à d'autres où une certaine forme de sécurité ou une source de problèmes où l'enjeu.
bon alors sa bonne. Merci Prince...
OriginalL'auteur Chris Prince