使用枚举的字符串属性字符串失败并且“无法将类型<enumtype>的值赋值为类型AnyObject”

时间:2016-01-25 19:06:52

标签: swift enums swift-subscript

我有一个带有下标属性的类(它继承自另一个在下标中采用'AnyObject'类型的类。)

Cannot assign value of type 'PayFrequency' to type AnyObject

编译器抱怨我:

value

当我尝试将AnyObject投射到set(value) { self["payFrequency"] = value as? AnyObject } 时:

.Weekly

...它编译,但无法将值设置为任何值(当我得到变量时,它总是返回默认值public enum PayFrequency: String { case Weekly = "weekly" case SemiMonthly = "semi-monthly" case BiWeekly = "bi-weekly" case Monthly = "monthly" } )。

这是枚举:

.attr("cx", function(d, i) { return i * totalWidth / (data.length - 1); })

如何让这个枚举与AnyObject一起使用,或者如何更新下标的getter / setter以正确存储枚举值?

1 个答案:

答案 0 :(得分:1)

AnyObject与枚举不兼容,因为枚举是值类型,而AnyObject对应于引用。

您可以尝试使用NSString作为枚举声明,并在属性中使用它的原始值。

public enum PayFrequency: NSString {

public var payFrequency: PayFrequency {
    get { return PayFrequency(rawValue: self["payFrequency"] as? String ?? "") ?? .Weekly }
    set(value) { self["payFrequency"] = value.rawValue }
}

或保持枚举声明相同,Swift应该能够在StringNSString之间架起桥梁。