我正在尝试为我的FieldIdentifiable协议创建一个扩展,只有实现它的枚举具有Int类型的RawValue。唯一的问题是return FieldIdItem(rawValue: newValue)
这行代码一直显示错误:
'Self.FieldIdItem' cannot be constructed because it has no accessible initializers
这是Swift的一个bug还是我漏了什么?
enum SignUpField: Int, FieldIdentifiable {
case Email = 0, Password, Username
typealias FieldIdItem = SignUpField
}
protocol FieldIdentifiable {
typealias FieldIdItem
func next() -> FieldIdItem?
func previous() -> FieldIdItem?
}
extension FieldIdentifiable where Self: RawRepresentable, Self.RawValue == Int {
func next() -> FieldIdItem? {
let newValue: Int = self.rawValue+1
return FieldIdItem(rawValue: newValue)
}
func previous() -> FieldIdItem? {
return FieldIdItem(rawValue: self.rawValue-1)
}
}