Ho il seguente in Swift
:Fare una classe Swift conformi ad un protocollo che richiede un init
protocol FooConvertible{
typealias FooType
init(foo: FooType)
}
posso fare Swift
classi conformi ad esso nella definizione della classe:
class Bar: FooConvertible {
var baz: String = ""
required init(foo: String){
baz = foo
}
}
Fin qui tutto bene. Tuttavia, il problema si pone quando cerco di fare una classe conforme ad essa in un interno (Con le classi di cacao, è la mia unica opzione, in quanto non ho la fonte):
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
}
}
Questo used to be possible, nelle precedenti versioni della lingua
Qual è il motivo per cui è stato rimosso?
Ciò significherebbe che tutti i protocolli XXXLiteralConvertible sono banditi dalle classi Cocoa!
Questo fatto è spiegato chiaramente dalla [documentazione] (https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html#//apple_ref/doc/ uid/TP40014097-CH24-XID_235). – CodaFi
Dove si dice che è possibile aggiungere praticità alle classi Swift ma non alle lezioni di Cocoa? – cfischer
Non sei autorizzato a farlo neanche. Il tuo esempio non viene compilato. – CodaFi