struct - Swift - 访问结构

标签 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

最佳答案

您正在尝试将字符串分配给定义为 Cat 的变量。这就是您收到错误的原因。

Cat 结构中的所有静态成员都是字符串,而不是 Cat

此外,您的结构没有任何实际成员。我认为您打算拥有一个名称属性:

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"

关于struct - Swift - 访问结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857040/

相关文章:

更改内存地址而不是 C 上结构中的值

ios - 自动布局以动态调整 UILabel 的高度和宽度

用于将枚举元素名称和值保存到文件的 C++ 宏

objective-c - 使用 Swift 的 Google map GMSGroundOverlay 委托(delegate)

ios - 文档选择器 Controller 的多项选择

c++ - 指针 (*and) 语法引用

arrays - 如何在golang的循环中删除结构数组的元素

GoLang - 填充结构数组

c++ - C++ 错误中的舍入数字 - 表达式必须具有整数或枚举类型

ios - 当 func 中的归档对象编码时(使用 aCoder : NSCoder) method crashed with swift enum in real revice