小编DrP*_*ill的帖子

Swift 枚举值不可设置

我在我的应用程序中添加了一些语法糖,但我遇到了“不一致”。可能有很好的理由,但是有没有办法稍微清理一下实现。我这样做是为了提供一个地方来设置/获取一些属性。

enum MyType: String {
    case Unknown, First, Second

    var enabled: Bool {
        set { UserDefaults.standard.set(newValue, forKey: self.rawValue) }
        get { return UserDefaults.standard.bool(forKey: self.rawValue) }
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我可以使用枚举值来获取默认值

if MyType.First.enabled {
    ........
}
Run Code Online (Sandbox Code Playgroud)

但我不能直接设置值:

MyType.First.enabled = true
Run Code Online (Sandbox Code Playgroud)

引发“无法设置属性,第一个不可分配”

但我可以逃脱

var type = MyType.First
type.enabled = true
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以使用单行方法?

setter enums swift computed-properties

4
推荐指数
1
解决办法
937
查看次数

标签 统计

computed-properties ×1

enums ×1

setter ×1

swift ×1