Es gibt similar questions da draußen, aber dieses ist auf der neuesten Swift 2.2 Version. Hoffentlich gibt es eine Lösung, denn das scheint mir ein großes Hindernis zu sein.Schwerwiegender Fehler beim Übergeben eines Array von Typen an Protokolle: kann nicht von Objective-C überbrückt werden
Die unten nicht zu let results
mit einem Fehler auf die Zuordnung: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0X0).
protocol P: class {
var value:Int {get}
}
class X: P {
var value = 0
init(_ value:Int) {
self.value = value
}
}
func getItems() -> [P] {
let items: [X] = [X(1), X(2), X(3)]
return items
}
let results: [P] = getItems()
Gibt es eine Möglichkeit eine Reihe von Klassen als ein Array von Protokollen zu behandeln, die es entspricht? Dies scheint wie eine wirklich einfache und natürliche Anfrage für eine Sprache, vor allem eine, die schwer ist protocol-oriented
.
Ich möchte nicht @objc
oder flatMap
wegen der großen Auswirkungen auf die Abhängigkeitskette und Leistung verwenden - das wäre ein Hack. Ich möchte, dass dies nativ funktioniert oder dass es sich um einen Bug handelt, den wir hoffentlich formulieren und dem Open-Source-Team von Apple/Swift vorstellen können.