web-dev-qa-db-fra.com

Construction pure Swift Cocoa Touch Framework

J'explore Swift avec Xcode-6 et jusqu'ici tout va bien même si je pense que les nouvelles collections ont besoin d'un peu de travail car j'ai réussi à casser le compilateur plusieurs fois.

Le problème est que je suis maintenant bloqué en essayant de créer le package de framework pour puis l'utiliser dans un autre projet. Le projet se construit sans problème et tous les tests réussissent. Lorsque je vais créer des archives (qui, je suppose, est ce qui est requis), je reçois l'erreur:

: 0: erreur: module Objective-C sous-jacent 'Sample' introuvable

Maintenant, je suppose que cela a quelque chose à voir avec le contenu de mon Sample.h qui me dit

// In this header, you should import all the public headers of your framework using statements like #import <Sample/PublicHeader.h>

ce qui est bien sauf que je n'ai utilisé que Swift énumérations, structures et classes pour ce framework, donc aucun fichier .h n'existe donc.

Quelqu'un peut-il faire la lumière sur celui-ci car je ne trouve pas encore de documentation disponible?

35
Moth

MODIFIER (27/07/2018)

Les informations dans la réponse ci-dessous peuvent ne plus être exactes. Votre kilométrage peut varier.


Je me suis assis avec un ingénieur et j'ai posé cette question exacte. Voici leur réponse:

Xcode 6 ne prend pas en charge la construction de frameworks distribuables Swift pour le moment et que Apple ne construira probablement pas cette fonctionnalité dans Xcode tant qu'il ne sera pas avantageux pour eux de le faire) . À l'heure actuelle, les cadres sont destinés à être intégrés dans le projet de votre application, plutôt que distribués. Si vous regardez l'une des vidéos de la session ou voyez les exemples de projets, c'est toujours l'arrangement. ne autre raison est que Swift est très nouveau et susceptible de changer. Par conséquent, votre infrastructure basée sur Swift n'est pas garantie de fonctionner sur la plate-forme sur laquelle vous l'avez initialement construite.

Légère mise à jour

L'ingénieur a mentionné qu'il n'est pas impossible de créer un cadre de distribution, mais qu'il n'est pas pris en charge.

24
Aaron

J'ai pu surmonter l'erreur en accédant à la cible du cadre et sur l'onglet Build Phases sous Headers, supprimez le fichier MyFramework.h

Cependant, j'obtenais l'erreur "Module Objective-C sous-jacent non trouvé" lorsque j'utilisais un cadre pour partager du code entre une application conteneur et une extension d'application, qui étaient toutes deux de Swift pur.

Image showing MyFramework.h for the MyFramework target on the Build Phases tab under Headers

11
Jamie McDaniel

Vous pourriez trouver cela utile: Création de pur Swift module

En bref: il est possible de créer un framework statique, mais il y a un problème: cela ne fonctionne pas dans le projet de l'utilisateur final si l'en-tête "ProjectName-Swift.h" est inclus.

Mais cela fonctionne bien si vous utilisez uniquement Swift.

2
AlexDenisov

En supposant que vous créez un module Swift Swift $ === vraiment pur, vous devez désactiver l'en-tête de compatibilité Objective-C et tous les en-têtes d'interface générés afin que le compilateur ne s'éteigne pas en supposant qu'il puisse trouver un module Objective-C pour le cadre. enter image description here

Ne pas supprimer votre en-tête de cadre public. Si vous le faites, vous obtiendrez un avertissement de carte de module au moment de la liaison.

2
CodaFi

Je pense que c'est un bogue dans XCode 6, ou que Apple ne permet pas d'archiver le Framework à partir de XCode en version bêta.

Si vous compilez pour profiler XCode génère correctement le framework. (Voir le dossier Release créé dans DerivedData)

0
jcgamestoy