如果我有这样定义的结构:
struct Cat {
static let Siamese = "Siamese"
static let Tabby = "Tabby"
static let Fluffy = "Fluffy"
static func cat () -> [String] {
return [Siamese, Tabby, Fluffy]
}
}
为什么我不能这样访问它?
var cat:Cat = Cat.Siamese //"NSString" is not a subtype of Cat
答案 0 :(得分:2)
您正在尝试将String分配给定义为Cat
的变量。这就是你收到错误的原因。
Cat
结构中的所有静态成员都是字符串,而不是Cat
s。
此外,您的结构没有任何实际成员。我想你打算有一个名字属性:
struct Cat {
let name: String
static let Siamese = Cat(name: "Siamese")
static let Tabby = Cat(name: "Tabby")
static let Fluffy = Cat(name: "Fluffy")
}
var cat : Cat = Cat.Siamese
你可能会更好地使用枚举:
enum Cat : String {
case Siamese = "Siamese"
case Tabby = "Tabby"
case Fluffy = "Fluffy"
}
var cat: Cat = .Tabby
println(cat.toRaw()) // "Tabby"