将操作页面中的类导入另一个页面

时间:2015-08-13 17:03:55

标签: swift xcode swift-playground

注意:这与导入通用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文件夹中。这并没有真正回答我的问题。

2 个答案:

答案 0 :(得分:2)

这适用于Xcode 8.3.3。

对于多个页面共有的代码,请将其放在顶级 Sources 组下的单独文件中。请务必在正确的位置使用正确的Swift访问控制关键字。

来自http://help.apple.com/xcode/mac/8.2/#/devfa5bea3af的注释:

...辅助Swift源文件必须使用 public 关键字将其导出。这包括类,方法,函数,变量和协议。

playground source file Common.swift:

public class DoIExist { public init(){ print("Woot!")} }

然后您可以在所有其他页面中引用它。像这样:

playground page第2页:

//: [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以起作用。