我正在尝试使用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'"
答案 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
。