Swift - 访问结构

时间:2014-07-21 02:45:41

标签: struct enums swift

如果我有这样定义的结构:

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

1 个答案:

答案 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"