如何在Swift中将枚举存储到可变数组中

3

请问如何在Swift中将枚举值存储在可变数组中?

下面讨论了Objective-C的相关问题,并且显然它可以正常工作。如何将枚举值存储在NSMutableArray中

对于int值,可以使用array.addObject(0)来存储。


请给我们一些关于枚举的代码,并说明您如何在数组中使用它,否则问题太过宽泛。 - Cristik
你为什么认为需要将它存储为NSNumber? - Fogmeister
2个回答

7
您是指像这样吗?
enum MyEnum {
    case Option1,
    Option2,
    Option3,
    Option4
}

var array: [MyEnum] = [.Option1, .Option2]
array.append(.Option3)
let b = MyEnum.Option4
array.append(b)

array[2] // Option3

如果您想将枚举值存储为整数,可以将枚举声明为具有 rawValue 作为 Int,并在数组中使用 rawValue 属性:

enum MyEnum: Int {
    case Option1,
    Option2,
    Option3,
    Option4
}

var array: [Int] = [MyEnum.Option1.rawValue, MyEnum.Option2.rawValue]
array.append(MyEnum.Option3.rawValue)
let b = MyEnum.Option4
array.append(b.rawValue)

(array as NSArray).objectAtIndex(2) // a NSNumber with value 2

需要将其添加为对象类型,例如存储为NSNumber。这将存储枚举值。 - Gobi M
1
@GobiM 我已经更新了我的答案,请您也更新您的问题以反映您需要将NSNumber值保存到数组中。 - Cristik
感谢您的时间!工作中,我在使用 rawValue 时犯了一个错误 :D - Gobi M

0

按照 @cristik 的回答实现

这解决了我的问题,

让 intervals: NSMutableArray = [Color.red.rawValue, Color.black.rawValue];


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接