Xcode游乐场无法访问Sources文件夹中的swift文件

时间:2015-04-14 21:09:13

标签: swift swift-playground xcode6.3

我刚刚升级到Xcode 6.3,他们为Playgrounds提供了一些新功能。如果您创建一个新游乐场并打开项目导航器,您将看到一个Sources文件夹,里面有一个“SupportCode.swift”文件。在该文件的顶部,它读取

  

此文件(以及此操场的Sources目录中的所有其他Swift源文件)将被预编译到一个框架中,该框架可自动提供给.playground。

我尝试将功能放到那里,我的操场无法使用。我究竟做错了什么?我是否必须手动手动编译SupportCode.swift文件?怎么样?

3 个答案:

答案 0 :(得分:156)

您必须将 public 访问属性添加到源文件夹中的类,方法和属性,以使它们可以从主操场文件访问,因为它们被编译器视为单独的模块

答案 1 :(得分:16)

游乐场适合运行测试。 将所有代码放在Sources目录中,并为每个测试提供一个可公开访问的'test'类。 然后从操场上运行可公开访问的测试。

playground

Test1.run()
Testx.run()
...

Sources/Test1.swift

public class Test1 {      
  public static func run() {
    let my_class = MyClass()
    let result = my_class.do_something()
    print(result)
  }
}

Sources/MyClass.swift

class MyClass {
  func do_something() -> String {
    return "lol"
  }
}

答案 2 :(得分:6)

正如您在Source文件夹中创建.swift文件时所提到的,它们可自动用于您的游乐场代码。 要控制此文件不同部分的访问权限,您可以使用以下访问级别修饰符:Response.Flush(); Response.SuppressContent = true; public& internal

根据Swift programming language access control

大多数情况下,默认访问级别为private,可在模块内部访问,但不在外部访问。

换句话说,如果您声明一个没有访问修饰符的类,您可以从Source文件夹中的另一个文件访问它,但不能在操场的主文件中访问它。 另一方面,如果使用public修饰符声明一个类,则可以在两种情况下访问它。

实际用途: 让我们做一个Singleton实现 第一:我在Source文件夹中创建了一个名为' Singy.swift' 使用以下代码:

internal

第二: 从我的操场上

public class Singy{
public var name="";
private static var instance:Singy?;
private init(){

}
public static func getSingy()->Singy{
    if Singy.instance==nil{
        Singy.instance=Singy();
    }
    return Singy.instance!;
}}

s1& s2引用相同的实例,但它只在类

中创建