在类的实例中使用类变量

时间:2015-01-28 19:03:04

标签: cocoa-touch swift

我正在尝试使用Swift创建一个类的实例(该类是所需的类型)但似乎在初始化实例时,类var不会应用于新实例。我确定有一个初始调用或者我缺少的东西,所以任何帮助都会受到极大的关注。

class Person: NSObject {

    private struct personNameStruct { static var _personName: String = "" }

    class var personName: String
        {
        get { return personNameStruct._personName }
        set { personNameStruct._personName = newValue }
    }

}

var testPerson: Person
testPerson.personName = "Foo"   //"'person' does not have a member named 'personName'"

2 个答案:

答案 0 :(得分:1)

通过对实例的引用来引用实例成员。

通过对类的引用来引用类成员。

所以,例如:

class Dog {
    class var whatDogsSay : String {
        return "Woof"
    }
    func bark() {
        println(Dog.whatDogsSay)
    }
}

为了使狗吠,做一只狗实例并告诉它吠叫:

let d = Dog()
d.bark()

要了解狗的说法,请与狗交谈:

let s = Dog.whatDogsSay

答案 1 :(得分:0)

如果您使用类名personName访问person变量,而不是实例名称person.personName = "Foo",则它适用于Playground。

这是因为Swift中的类变量类似于Java和C#等语言中的静态变量,因为它在该类的所有实例之间共享。如果您只是想要一个属性,请不要将其声明为class var,而只是var