similar questionsがありますが、これは最新のSwift 2.2バージョンです。うまくいけば、これは私の心の中でProtocol-Oriented Programming
の大きな障害のように思えるので、今は解決策があります。以下型配列をプロトコルにキャストするときの致命的なエラー:Objective-Cからブリッジできません
はエラーでlet results
に割り当てることに失敗: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()
は、それがに準拠したプロトコルの配列としてのクラスの配列を治療する方法はありますか?これは、言語のための本当にシンプルで自然な要求のように特に重くprotocol-oriented
です。
@objc
またはflatMap
は、依存関係のチェーンとパフォーマンスに大きな影響を与えるため、使用したくありません。これはハックです。私はこれをネイティブに動作させたい、あるいはApple/Swiftのオープンソースチームに提出してくれるバグです。