如何在类方法中返回self?

时间:2016-01-17 23:33:52

标签: ios swift class

试过这个并且它给了我一个错误:

class BaseClass {
    class var testProperty: String {
        return "Original"
    }
    class func testingFunc()->Self {
       return self // error - Can not convert return expression of type "Self.Type" to return the type "Self"
    }
}

有什么想法? 感谢

3 个答案:

答案 0 :(得分:8)

在类/静态函数中,self引用类类型。没有实例可以参考,所以你得到的是类型,它是当前的范围。它在实例方法中并不相同,其中self指的是<instance>.self

class Foo {
    class func classMethod() -> Foo.Type {
        return self // means Foo.self
    }

    func instanceMethod() -> Foo {
        return self // means <instance of Foo>.self
    }
}

答案 1 :(得分:0)

您的返回类型应该是您所在的类类型。在这种情况下,它是BaseClass

此外,您正在定义一个基本上是静态函数的类函数。它不会返回实例。我真的不明白你想要完成什么。

答案 2 :(得分:-1)

如果要获取有关实例的信息,请使用实例函数。在定义函数时省略关键字class

class BaseClass {
   func instanceInfo() {
       // self here refers to the instance
   }
}