webentwicklung-frage-antwort-db.com.de

Können Swift-Spielplätze andere Quelldateien im selben Projekt sehen?

Ich habe die einfachste benutzerdefinierte Klasse in einer separaten Swift-Datei in meinem Projekt erstellt:

class Foo
{
    init()
    {
        println("I made a foo.")
    }
}

Dann habe ich es auf einem Spielplatz im selben Projekt versucht

var x = Foo()

Xcode schien das nicht zu mögen und sagte mir, dass 'Foo' ein ungelöster Bezeichner ist. Ich bin etwas verwirrt darüber, wie Spielplätze in die übrige Projektstruktur passen, da jede andere Swift-Datei in meinem Projekt 'Foo' ohne Probleme lösen kann.

Wie kann ich meinem Spielplatz die Möglichkeit geben, benutzerdefinierte Klassen zu verwenden, die ich in anderen Swift-Dateien in meinem Projekt definiere? Ich habe versucht, das Produktmodul für das Build-Ziel zu benennen und es ohne Erfolg in den Spielplatz zu importieren: Der Spielplatz erkennt den Namen des Produktmoduls nicht.

Vielen Dank im Voraus für die Hilfe. Ich weiß, es ist etwas einfaches.

39
Maxwell Collard

Sie können nicht. Spielplätze sind in sich abgeschlossen. Dies wird sich hoffentlich in Zukunft ändern.

Bearbeiten: Ab Xcode 6.3 können Playgrounds jetzt unterstützenden Code enthalten. Sie können immer noch keinen anderen Code in demselben Projekt sehen, aber der Support-Ordner eines Playgrounds kann mit Code versehen werden, der vom Spielplatz aus verwendet werden kann. Siehe das Swift-Blog für weitere Informationen.

27
Lily Ballard

Es gibt zwei Möglichkeiten, den Code Ihres Projekts in einem Spielplatz zu verwenden

Spielquellen-Ordner

Ja, in Xcode 6.3 Beta 3 (und hoffentlich in die Zukunft):

Spielplätze werden jetzt in Xcode als ein Bündel mit einem Dreieck dargestellt, in dem Ressourcen- und Quellenordner angezeigt werden, wenn Sie darauf klicken. Diese Ordner enthalten zusätzliche Inhalte, die über den Swift-Hauptcode Ihres Spielplatzes leicht zugänglich sind. Um diese Ordner anzuzeigen, wählen Sie Ansicht> Navigatoren> Projektnavigator anzeigen (oder drücken Sie einfach die Tastenkombination "Befehl-1").

Öffnen Sie einen neuen Spielplatz und drücken Sie cmd + 1, um den linken Bereich anzuzeigen. Ziehen Sie dann die Dateien in den Ordner source, um ihn innerhalb des Spielplatzes zu verwenden.

Hinweis:

Die Dateien im Quellordner werden zu einem Framework kompiliert. Wenn Sie also möchten, dass Klassen, Funktionen usw. auf dem Spielplatz verfügbar sind, müssen sie explizit als public gekennzeichnet sein.

public class VisibleClass {
}

class InvisibleClass {
}

Quelle: Blog veröffentlichen

Projekt in Framework übersetzen

  1. Verschieben Sie das Projekt in den Arbeitsbereich, falls noch nicht geschehen. (Datei -> Als Arbeitsbereich speichern) erledigt den Trick
  2. Fügen Sie Ihrem Projekt ein Rahmenziel hinzu
  3. Rahmen schaffen
  4. Stellen Sie sicher, dass die Dateien, auf die Sie zugreifen möchten, Ihrem Framework-Ziel hinzugefügt werden
  5. Spielplatz zu workspace hinzufügen (NICHT das Projekt)
  6. Verwenden Sie @testable import YourFrameworkName
  7. Zugangscode auf dem Spielplatz

Ich habe hier ein Schreiben verfasst, das ein wenig detaillierter ist, wenn Sie prüfen wollen .

27
Logan

Ja. Ich begann mit dem Hinzufügen einer Klassendatei im Sources-Verzeichnis .

  • klasse 
  • drin 
  • mitglieder

Nach vielen Versuchen funktionierte nichts. Der XCode stürzte ab und nach dem erneuten Öffnen funktionierte alles wie ein Zauber.

Using Sources/Dna.Swift in Playground

3
Uki D. Lucas

In Xcode 10 Project Navigator:

  1. Fügen Sie die Quellcodedatei dem Quellenordner des Spielplatzes hinzu.
  2. Ziehen Sie die Datei aus dem Quellenordner des Spielplatzes an die gewünschte Stelle im Projekt (das kleine "Plus in einem Kreis" -Symbol sollte angezeigt werden.
  3. Beenden Sie das Ziehen und deaktivieren Sie im Dialogfeld "Datei hinzufügen" die Option "Kopieren, falls erforderlich" 

Die Quelldatei "lebt" jetzt im Spielplatzpaket; das Projekt verweist darauf (Sie können dies mit dem Dateiinspektor überprüfen).

Ich habe es andersherum ausprobiert: Datei lebt im Projektordner mit Referenz im Quellenordner des Spielplatzes, aber es hat nicht funktioniert; Ich bekam zwei Kopien der Quellcodedatei.

0
Verticon