Xcode 6 / Beta 4: à l'aide de combler les en-têtes avec des cibles pour le cadre de est pas pris en charge
J'ai juste mis à niveau vers Xcode 6 Bêta 4 et avoir un cadre que j'ai créé pour les Affichages en Direct dans la version Bêta 2. En raison d'un autre swift bug, j'avais besoin d'utiliser certains Obj-C du code. Lorsque la mise à niveau si, j'obtiens l'erreur suivante:
erreur: à l'aide de combler les en-têtes avec des cibles pour le cadre de est pas pris en charge
Je n'ai rien vu dans les notes de version, ou toute autre voie de migration. Quelqu'un d'autre a vu cela et arrivé à une solution?
Je me rends compte que la Bêta 3 qui a éliminé la nécessité pour les cadres pour les affichages en direct, mais il est logique dans mon cas, si je peux l'obtenir pour fonctionner. Je peux l'enlever mais comme un secours, mais préférez l'utilisation d'un cadre si elles ne sont pas totalement rompu en version Bêta 4.
- "Je me rends compte que la Bêta 3 qui a éliminé la nécessité pour les cadres". Comment?
- (pour des affichages en direct) - édité
- Je suis en cours d'exécution dans la même situation.
- Wow, votre petit edit il vient de ma vie tellement mieux de ne pas entendre parler de ce changement (en éliminant la nécessité pour les cadres) de n'importe où et à se taper la tête avec tous ces cibles pour le cadre pour des affichages en direct pendant des heures. Merci beaucoup pour cette @chrisco!
Vous devez vous connecter pour publier un commentaire.
Que les états d'erreur, de combler les en-têtes ne sont pas admis dans les Cadres. Le l'Importation de Code à partir Dans le Même Cadre Cible section de la Mix & Match la documentation d'apple allusion à cela. Comme ils le disent, vous devez vous "Dans votre parapluie en-tête de fichier, importer chaque Objective-C en-tête, vous souhaitez exposer à Swift".
Cependant, j'ai découvert que vous pouvez aussi avoir besoin pour rendre ces en-têtes spécifiques public. Cette réponse examine pourquoi et comment le faire: Swift erreur de compilateur: "la non-modulaire-tête à l'intérieur du cadre du module".
Donc, faites ceci:
Note: Le "parapluie fichier d'en-tête" est un fichier (nommé [Nom du produit].h) qui représente en général tous les en-têtes d'un cadre. Il est généralement juste une liste de #import des déclarations à d'autres en-têtes de contenus dans le cadre. Dans Xcode, si vous ouvrez UIKit.h, vous allez voir un bon exemple d'un parapluie fichier.
Il y a deux possibilités. L'ajout de l'entête nécessaire à la parapluie fichier d'en-tête et les rendre publics en est une. Cependant, c'est un problème si les en-têtes doivent être disponibles à Swift, mais pas du public.
La deuxième possibilité qui veut faire des en-têtes internes disponibles pour Swift est décrite en détail ici. Essentiellement, un module de carte semblable à la suivante doit être créé:
Cela peut ensuite être inclus dans XCode à l'aide du paramètre:
Voir L'importation d'Objective-C en Swift .
Pour importer code Objective-C dans Swift à partir du même cadre
Dans votre parapluie en-tête de fichier, importer chaque Objective-C en-tête, vous souhaitez exposer à Swift. Par exemple:
Rendre les fichiers inclus dans le cadre du "en-Têtes" de ses "Phases de construction".
Nettoyer et reconstruire.
Swift pourrez voir tous les en-tête de vous exposer publiquement dans votre parapluie en-tête. Le contenu de l'Objective-C fichiers dans ce cadre seront disponibles dans toute Swift fichier dans ce cadre, l'objectif automatiquement, sans aucune déclarations d'importation. Utilisez votre custom code Objective-C avec le même Swift syntaxe à utiliser avec le système de classes.
Important: le "parapluie fichier d'en-tête" signifie que le fichier {ModuleName}.h.
BTW, le nom de la cible est {ModuleName}.cadre.