76 votes

Comment importer des classes, à partir de votre propre projet dans une aire de Jeux

Supposons une installation comme ceci:

  • Vous avez un Xcode 6 du projet, où vous avez mis en œuvre vos propres classes (dire Mavue et MyViewController) avec à la fois Objective-C et Swift
  • Vous avez ajouté une aire de Jeux dans votre projet

Dans la cour de récréation, il est possible d'importer des modules (cadres) comme UIKit avec l' import mot-clé. Comment voulez-vous activer l'accès pour les autres classes de l'aire de Jeux?

Juste essayer de projet sur l'accès des classes directement les résultats avec un message d'erreur: L'utilisation de non identificateur 'Mavue'

56voto

Rick Ballard Points 876

Nous n'avons actuellement pas en charge l'importation de votre propre application ou un cadre de code dans une aire de jeux, court de le coller dans l'aire de jeux de l'éditeur. Nous sommes conscients que cela est très souhaitable de fonctionnalités, mais comme toujours, nous vous encourageons à déposer un rapport de bug à bugreport.apple.com à propos de quelque chose que vous aimeriez nous voir ajouter une prise en charge.

Comme de Xcode 6.0 Bêta 5, il est maintenant possible d'importer vos propres cadres dans une aire de jeux. Cela fournit un moyen de partager du code entre vos applications et les terrains de jeux, qui peuvent à la fois de l'importation de vos cadres. Pour ce faire, votre terrain de jeu doit être dans le même espace de travail que le projet de production de votre cadre. Vous devez avoir déjà créé votre cadre. Si c'est un iOS cadre, il doit être construit pour un 64 bits exécuter destination (par exemple, l'iPhone 5s). Vous devez disposer d'un actif de régime qui s'appuie au moins une cible (target build emplacement sera utilisé dans le cadre de la recherche de chemin d'accès de l'aire de jeux). Votre "Emplacement de génération" préférences avancées "Lieux"), ne doit pas être réglé sur "l'Héritage". Si votre cadre n'est pas un Swift cadre de la "Définit le Module" construire paramètre doit être réglé sur "Oui". Une fois toutes ces conditions sont remplies, l'importation de votre cadre de travail dans une aire de jeux.

17voto

Markus Rautopuro Points 780

J'ai effectivement réussi à se référer à d'autres Swift fichiers dans le projet en cours en faisant ceci:

  • Créer un vide d'aire de Jeux et le lieu est quelque part dans votre projet.
  • Ouvrez l' YourPlayground.playground bundle (oui, c'est un bundle = répertoire) dans le Terminal.
  • Edit contents.xcplayground par exemple avec vi et ajouter un autre article comme ceci:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<playground version='3.0' sdk='iphonesimulator'> 
   <sections>
       <code source-file-name='section-1.swift'/>
       <code source-file-name='section-2.swift'/>
   </sections>
   <timeline fileName='timeline.xctimeline'/>
</playground>
  • Renommer section-1.swift de section-2.swift (si vous avez créé l'Aire de jeu à partir de zéro, il devrait être un exemple section-1.swift dans votre forfait)
  • Ajouter un lien en dur (lien symbolique ne semble pas fonctionner) nommé section-1.swift qui pointe hors forfait à votre Swift fichier de classe comme:
ln ../../Classes/MyView.swift section-1.swift
  • Près de Xcode et ouvrir le terrain de jeu de nouveau.
  • Maintenant, il devrait être de deux sections, l'une avec le contenu de votre Swift fichier de classe et l'autre avec l'exemple de contenu que vous avez obtenu à partir de la création de l'Aire de jeu à partir de zéro.

De cette façon, je peux effectivement exécuter du code en dehors de l'Aire de jeu, mais Xcode semble crash le plus souvent quand on fait comme ça.

Edit:

Comme de Xcode 6 beta 5 vous êtes maintenant en mesure de consulter les fichiers de projet, comme Rick Ballard indique dans sa réponse.

12voto

nschum Points 3621

Depuis la Beta 5 de Xcode 6, il est possible d'importer votre code si c'est dans un cadre. Ce que vous devez faire est de créer un cadre de cible, ajoutez le Swift de fichiers et de votre terrain de jeu ne

import ModuleName

Vous pouvez rechercher le nom du module dans les paramètres de construction. C'est généralement le même que le nom de la cible.

N'oubliez pas de faire le code que vous souhaitez voir public. Vous aurez besoin pour construire le projet avant les modifications sont disponibles dans l'aire de jeux. (Vous aurez aussi besoin de modifier l'aire de jeux pour déclencher la ré-exécution.)

Important

Ne donnez pas l'aire de jeux fichier le même nom que la cible! Si vous le faites, l'importation semble fonctionner, mais vous aurez l'erreur suivante lors de l'aire de jeu tente d'exécuter:

Aire de jeux de l'exécution a échoué: erreur: impossible de recherche de symboles:

J'ai perdu une heure à le comprendre. :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X