2
我试图为我的FieldIdentifiable协议创建一个扩展,只有在实现它的枚举具有Int的RawValue时。唯一的问题是,return FieldIdItem(rawValue: newValue)
线不断显示此错误:RawRepresentable上的Swift扩展没有可访问的初始化程序
'Self.FieldIdItem' cannot be constructed because it has no accessible initializers
这是一个斯威夫特错误还是我失去了一些东西?
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)
}
}
这工作,是干净的。谢谢! – programmerdave