web-dev-qa-db-fra.com

Import de terrain de jeu: pas de module de ce genre

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:  enter image description here

Voici une autre tentative, basée sur la réponse de @EricD, montrant la structure du répertoire, pas de dés .  enter image description here

28
GoZoner

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.

2
GoZoner

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:

 Working scheme

35
Cedric

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.

 enter image description here

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()

 enter image description here

14
ayaio
  1. Créez un espace de travail comme ci-dessous:

    • Choisissez Fichier> Nouveau> Espace de travail
    • Entrez le nom de l'espace de travail et spécifiez son emplacement dans votre système de fichiers.
    • Cliquez sur Enregistrer
  2. Maintenant, créez un framework Cocoa avec un fichier Swift contenant votre classe

    • Choisissez Fichier> Nouveau> Projet
    • Sélectionnez Framework Cacao> Suivant
    • Entrez le nom du produit et la langue> Suivant
    • Avant de cliquer sur créer, dans les listes "Ajouter à:" et "Groupe", choisissez "Nom de votre espace de travail" comme indiqué  Add to workspace
    • La structure est ajoutée à votre espace de travail
  3. Créer un fichier Swift dans votre framework
    • Dans Xcode, cliquez avec le bouton droit sur le dossier dans lequel vous souhaitez ajouter un fichier Swift et sélectionnez un nouveau fichier ...
    • Sélectionnez Swift> Suivant> Nommez votre fichier> Créer.
  4. Sélectionnez votre framework dans Xcode -> Construisez votre framework
  5. Créer un terrain de jeu -> Le terrain de jeu doit également faire partie de votre espace de travail. Si vous ne le faites pas glisser sur votre espace de travail, il sera ajouté automatiquement .
    • Faites un clic droit dans la section Fichiers de Xcode> Nouveau fichier ...> Playground
    • importation 
    • Appelez votre méthode

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?

5
Anni S

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:

  • cliquez sur n'importe quel fichier de jeu dans votre espace de travail
  • affichez le panneau Utilitaires (opt-cmd-0)
  • sous "Paramètres du terrain de jeu", remplacez la "Plate-forme" par une autre valeur, puis rétablissez-la. 

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.

4
Sebastien Martin

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é.

0
Chris Conover

enter image description hereConstruisez le framework avec release, cela a fonctionné pour moi. (Xcode 10.1, Swift 4.2)

0
user9232582