相关疑难解决方法(0)

如何在switch语句之外访问Swift枚举关联值

考虑:

enum Line {
    case    Horizontal(CGFloat)
    case    Vertical(CGFloat)
}

let leftEdge             =  Line.Horizontal(0.0)
let leftMaskRightEdge    =  Line.Horizontal(0.05)
Run Code Online (Sandbox Code Playgroud)

如何在lefEdge不使用switch语句的情况下直接访问相关值?

let noIdeaHowTo          = leftEdge.associatedValue + 0.5
Run Code Online (Sandbox Code Playgroud)

这甚至没有编译!

我看了一下这些 SO 问题,但没有一个答案似乎解决这个问题.

noIdeaHowTo上面的非编译行应该是单行,但由于associated value可以是任何类型,我甚至无法看到用户代码如何在le enum本身中编写"泛型"get或associatedValue方法.

我最终得到了这个,但它很严重,每次我添加/修改案例时都需要我重新访问代码...

enum Line {
    case    Horizontal(CGFloat)
    case    Vertical(CGFloat)

    var associatedValue: CGFloat {
        get {
            switch self {
                case    .Horizontal(let value): return value
                case    .Vertical(let value): return value
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有人指点吗?

enums swift

48
推荐指数
5
解决办法
2万
查看次数

Swift中Enum的默认值

我有一个enum:

public enum PersonType:String {

 case Cool                       = "cool"
 case Nice                       = "rude"
 case SoLazy                     = "so-lazy"

 public var description: String {
    switch self {
    case .Cool:
        return "Cool person"
    case .Nice:
        return "Nice person"
    case .SoLazy:
        return "its so lazy person"
    }
}


 public var typeImage: String {
    switch self {
    case .Cool:
        return "cool.png"
    case .Nice:
        return "img_nice.png"
    case .Solazy:
        return "lazy.png"
    }
   }  

}
Run Code Online (Sandbox Code Playgroud)

问题我不知道所有的人类型键,所以我需要处理类型为人的默认情况,并给它描述将是它的关键像"so-lazy"和默认图像.

假设我从Web服务获得此结果:

[
    {
        name: "john",
        key: "cool"
    },
    {
        name: …
Run Code Online (Sandbox Code Playgroud)

enums ios data-structures swift swift2

11
推荐指数
6
解决办法
2万
查看次数

标签 统计

enums ×2

swift ×2

data-structures ×1

ios ×1

swift2 ×1