我有一个带有下标属性的类(它继承自另一个在下标中采用'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以正确存储枚举值?
答案 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应该能够在String
和NSString
之间架起桥梁。