How to import own classes from your own project into a Playground
As of Xcode 6.0 Beta 5, it is now possible to import your own frameworks into a playground. This provides a way to share code between your applications and playgrounds, which can both import your frameworks. To do this:
Your playground must be in the same workspace as the project that produces your framework. Your workspace must contain a target that produces the framework, instead of using a pre-built framework.
You must have already built your framework. If it is an iOS framework, it must be built for a 64-bit run destination (e.g. iPhone 5s), and must be built for the Simulator.
You must have an active scheme which builds at least one target (that target's build location will be used in the framework search path for the playground).
Your "Build Location" preference (in advanced "Locations" settings of Xcode) should not be set to "Legacy".
If your framework is not a Swift framework the "Defines Module" build setting must be set to "Yes".
You must add an import statement to your playground for the framework.
Once all these conditions are fulfilled, importing your framework will work in a playground.
In Xcode 7 we introduced another mechanism that you can use to import your own classes as source, instead of importing a framework; you can read about this "Auxiliary Sources" support at http://help.apple.com/xcode/mac/8.0/#/devfa5bea3af
I actually managed to refer to other Swift files in the current project by doing this:
- Create an empty Playground and place is somewhere under your project.
- Open the
YourPlayground.playground
bundle (yes, it's a bundle = directory) in Terminal. - Edit
contents.xcplayground
for example withvi
and add another section like this:
<?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>
- Rename
section-1.swift
tosection-2.swift
(if you created the Playground from scratch, there should be an examplesection-1.swift
in your bundle) - Add a hard link (symbolic link doesn't seem to work) named
section-1.swift
which will point outside the bundle to your Swift class file like:
ln ../../Classes/MyView.swift section-1.swift
- Close Xcode and open the Playground again.
- Now there should be two sections, one with the contents of your Swift class file and the other one with the example content you got from creating the Playground from scratch.
This way I can actually run code lying outside the Playground, but Xcode seems to crash more often when doing it like this.
Edit:
As of Xcode 6 beta 5 you're now able to refer to project files, as Rick Ballard instructs in his answer.