J'ai scrupuleusement suivi les instructions Apple pour importer un module personnalisé dans une aire de jeux, y compris les instructions ici . Et pourtant je reçois:
L'exécution du terrain de jeu a échoué: /var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.Swift:7:8: erreur: aucun module de ce type 'Foo'. importer Foo
Comment puis-je récupérer sur une importation de terrain de jeu qui fonctionne? [Edit: Remarque, deux réponses ont produit des instructions détaillées pour associer un terrain de jeu à un cadre; J'ai suivi ces instructions mais pas de chance. La solution nécessitera de reconfigurer quelque chose dans Xcode; mon installation est apparemment cassée]
Images détaillées de l'erreur et des tentatives:
Voici une autre tentative, basée sur la réponse de @EricD, montrant la structure du répertoire, pas de dés .
La solution , du support Apple, consistait à ajuster mes préférences Xcode. Sur les sites :: Advanced ma configuration était 'Legacy'. En changeant pour 'Unique' et en annulant les chemins que j'avais tenté d'insérer, Playgrounds peut maintenant importer des cadres.
Pour certaines de celles pour lesquelles aucune des solutions ci-dessus ne fonctionne (et que le paramètre de chemin de génération Xcode était déjà défini sur Unique
), j'ai trouvé une solution.
La structure doit être construite avec un schéma pour un simulateur iOS (n'importe lequel dans la liste) et PAS avec un Generic iOS Device
, car les terrains de jeu ne le prennent pas en charge. Celui-ci a fonctionné pour moi:
Voici comment je procède pour OS X avec Xcode 7.1:
Créer un nouveau projet: OS X Cocoa Framework, Swift. Pour cet exemple, je l'ai nommé "TestPlaygroundFMK".
Créez un nouveau fichier Swift.
Ajouter une classe au fichier. _ {Le code doit être public.} J'ai créé ceci pour notre exemple:
import Foundation
public class Talk {
public class func sayHello() {
print("Hello from framework!")
}
}
Construisez le projet maintenant.
Dans la barre de menus, cliquez sur Fichier> Enregistrer en tant qu'espace de travail.
Créez un nouveau terrain de jeu et enregistrez-le dans le dossier du projet à côté des fichiers Swift.
Le terrain de jeu doit pas avoir le même nom que le projet.
Construisez le projet à nouveau.
Importez votre framework dans le Playground et utilisez-le:
import TestPlaygroundFMK
Talk.sayHello()
Créez un espace de travail comme ci-dessous:
Maintenant, créez un framework Cocoa avec un fichier Swift contenant votre classe
Remarque: Si vous souhaitez simplement ajouter des classes au lieu de framework à votre terrain de jeu, cliquez sur le lien Comment importer ma propre classe dans un terrain de jeu Xcode 7?
Mon terrain de jeu fonctionnait bien, mais j'ai constaté que lorsque j'arrêterais Xcode et le rouvrirais, j'obtiendrais une erreur comme celle-ci:
erreur: /var/folders/ft/bmk8wh6s5ms4my2pqhn3qbp40000gn/T/playground1-9216e0..Swift:3:8: erreur: aucun de ces modules 'Playground_Sources' importer Playground_Sources
... où "Terrain de jeu" est le nom de mon fichier de terrain de jeu.
La solution à cela (dans Xcode 9.0) est de:
opt
-cmd
-0
)Dans mon cas, il est défini sur macOS
. Je l'ai changée en iOS
puis de nouveau en macOS
(pas de recompilation nécessaire) et tout a commencé à fonctionner correctement ... jusqu'à ce que je ferme Xcode et l'ouvre à nouveau.
C’est la seule solution que j’ai trouvée pour travailler avec terrains de jeu macOS . Ce bogue existe toujours dans Xcode 9.3.
Je ne pense pas qu'il soit exagéré de dire que Xcode est un peu une boîte noire. Je ne prétends pas que cela fonctionnera pour quelqu'un d'autre, mais pour moi, après avoir eu le même problème après avoir créé un nouveau terrain de jeu et une nouvelle cible de cadre, ainsi que toutes les autres solutions proposées, ce qui a finalement fonctionné a mon cas) en le régénérant avec des cocoapodes.
Je ne sais pas pourquoi cela a fonctionné.
Construisez le framework avec release, cela a fonctionné pour moi. (Xcode 10.1, Swift 4.2)