【问题标题】:Set enum from NSDictionary Swift从 NSDictionary Swift 设置枚举
【发布时间】:2014-12-07 21:22:46
【问题描述】:

我将信息存储在一个 plist 文件中,然后将其放入字典中。

我有一个类,其中一些枚举设置如下:

enum componentPostion {
    case upperLeft, UpperRight, lowerLeft, lowerRight
}

我已经声明了一个类型为 componentPostion 的 var

var isPosition: componentPostion

然后我可以从字典中的值设置枚举,而不必编写带有 switch 语句等的函数吗?我试过这个没有运气

isPosition = componentInfo["Type"] as componentPostion

【问题讨论】:

  • 这本词典是如何声明的?
  • IM 从存储在 plist 文件中的字典创建字典,如下所示 let dict = NSDictionary(contentsOfFile: NSBundle.mainBundle().pathForResource("Cards", ofType: "plist")!) componentInfo = dict.valueForKeyPath(componentName) as NSDictionary 在 plist 文件中它是一个字符串

标签: ios xcode types swift enums


【解决方案1】:

您可以通过从您想要保存的类型继承枚举来使用原始值,在您的情况下,我认为它是字符串:

enum componentPostion : String{
    case upperLeft = "upperLeft"
    case upperRight = "upperRight"
    case lowerLeft = "lowerLeft"
    case lowerRight = "lowerRight"
}

那么你可以使用fromRaw()来获取一个枚举案例:

let isPosition = componentPostion.fromRaw("upperLeft")

toRaw() 获取其字符串表示

isPosition.toRaw()

注意fromRaw() 返回一个可选参数,以防参数与为枚举定义的任何原始值不匹配

推荐阅读:Raw Values

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多