带有嵌套类的Swift 4上的“实例成员不能在类型上使用”错误

时间:2017-07-25 16:52:56

标签: swift inner-classes swift4

我有一个带有嵌套类的类。我试图从嵌套类中访问外部类的变量:

class Thing{
    var name : String?
    var t = Thong()

    class Thong{
        func printMe(){
            print(name) // error: instance member 'name' cannot be used on type 'Thing'
        }
    }

}

然而,这给了我以下错误:

  

实例成员'name'不能用于'Thing'类型

有没有一种优雅的方法来规避这个?我希望嵌套类能够捕获词法范围,就像闭包一样。

由于

2 个答案:

答案 0 :(得分:2)

你可以做这样的事情

class Thing{
    var name : String = "hello world"
    var t = Thong()

    init() {
        t.thing = self
        t.printMe()
    }


    class Thong{
        weak var thing: Thing!

        func printMe(){
            print(thing.name)
        }
    }

}

答案 1 :(得分:0)

尝试传递变量,而不要尝试直接使用它。

class Thing{
    var name : String?
    var t = Thong()

    class Thong{
        func printMe(name: String){
            print(name) 
        }
    }
}