Приведение класса Swift в соответствие с протоколом, который требует инициализации
У меня есть следующееprotocol
вSwift
:
protocol FooConvertible{
typealias FooType
init(foo: FooType)
}
я могу сделатьSwift
классы соответствуют этому в определении класса:
class Bar: FooConvertible {
var baz: String = ""
required init(foo: String){
baz = foo
}
}
Все идет нормально. Однако проблема возникает, когда я пытаюсь привести класс в соответствие с расширением (с классами Какао это мой единственный вариант, так как у меня нет источника):
class Baz {
var baz = ""
}
extension Baz: FooConvertible{
required convenience init(foo: String) { // Insists that this should be in the class definition
baz = foo
}
}
extension NSURL: FooConvertible{
required convenience init(foo: String) { // this also fails for the same reason
}
}
этораньше было возможнов предыдущих версиях языка
По какой причине он был удален?
Это означало бы, что все XXXLiteralConvertible Protocols запрещены для классов Какао!