注意:这与导入通用swift文件(可以使用Sources文件夹完成)不同question。
我有一个有2页的游乐场,我想使用第二页第一页中定义的协议。我将使用JSON转换的示例。
JSON.xcplaygroundpage
import Foundation
protocol JSONConvertible {
func jsonValue() -> String
}
JSONArray.xcplaygroundpage
import Foundation
//Undeclared type JSONConvertible
extension Array : JSONConvertible {
}
我尝试过以下导入:
import MyPlayground
import MyPlayground.JSON
import JSON
import JSON.Contents (in finder the file name is actually Contents.swift)
我还尝试将JSON.xcplaygroundpage添加到JSONArray
的Source文件夹以及Resources文件夹中。
注意:我意识到我可以将协议定义放在单独的JSON.swift
中,并将其包含在我的项目Sources文件夹中。这并没有真正回答我的问题。
答案 0 :(得分:2)
这适用于Xcode 8.3.3。
对于多个页面共有的代码,请将其放在顶级 Sources 组下的单独文件中。请务必在正确的位置使用正确的Swift访问控制关键字。
来自http://help.apple.com/xcode/mac/8.2/#/devfa5bea3af的注释:
...辅助Swift源文件必须使用 public 关键字将其导出。这包括类,方法,函数,变量和协议。
public class DoIExist { public init(){ print("Woot!")} }
然后您可以在所有其他页面中引用它。像这样:
//: [Previous](@previous)
let d = DoIExist()
//: [Next](@next)
你可以看到它是有效的,因为控制台输出(“Woot!”)和视图结果装订线。
为实现这一目标,我按照Apple Xcode documentation about Playgrounds的指示进行了操作。当Apple不可避免地移动这些文档并且不提供转发链接时,请继续阅读我是如何找到它的。
我搜索了 cocoapriest 的答案中的链接中找到的线索:"ios recipes Playground Help Add Auxilliary Code to a Playground"。这导致Apple在标题为“将辅助代码添加到游乐场”的部分中标题为“使用游乐场”的章节中称为“Xcode帮助”的文档。
答案 1 :(得分:-1)
让这个与Apple的这条指令一起使用:https://developer.apple.com/library/ios/recipes/Playground_Help/Chapters/AddAuxilliaryCodetoaPlayground.html
确保声明您的课程是公开的。此外,我不得不重新启动Xcode以起作用。