【发布时间】:2016-03-02 07:28:55
【问题描述】:
我正在尝试为我的 FieldIdentifiable 协议创建一个扩展,仅当实现它的枚举具有 Int 的 RawValue。唯一的问题是return FieldIdItem(rawValue: newValue) 行一直显示此错误:
'Self.FieldIdItem' cannot be constructed because it has no accessible initializers
这是一个 Swift 错误还是我遗漏了什么?
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)
}
}
【问题讨论】:
标签: swift generics enums swift-extensions swift-protocols