2016-04-08 15 views
0

[Warum kann [HomeADItem] nicht in [ADItem] konvertiert werden? Was ist los? ]Swift-Protokoll funktioniert nicht

Wenn ich das ADItem-Protokoll mit @objc markiere, ändern Sie die HomeADItem-Superklasse zu NSObject, das ist Arbeit. wer kann mir helfen, danke voraus!

+0

fügen Sie bitte ein Snippet Ihres Codes hinzu. Vielen Dank. – Ragnar

Antwort

3

Swift leitet den Typ von [HomeADItem] nicht automatisch als [ADItem] ab. Eine explizite Anmerkung sollte Ihr Problem beheben.

let items: [ADItem] = [ 
    HomeADItem(name: "test1", id: "1"), 
    HomeADItem(name: "test2", id: "2") 
] 
ADScrollView.viewWithframe(CGRectZero, items: items) 
+2

Swift hat keine Schwierigkeiten, auf den Typ zu schließen. Der Typ wird auf "HomeADItem" abgeleitet, da "items" 'HomeADItem'-Objekte enthält. Die Tatsache, dass dieser Typ mit "ADItem" übereinstimmt, ist für den Compiler hier nicht relevant. * Conforming * bedeutet nicht * erben *, also müssen Sie explizit casten. – Pyroh

+0

Ja, das war schlampig Formulierung. Vielen Dank. –

+0

@Pyroh Ich dachte immer, Compiler kann die Elemente auf [ADItem] schließen, danke –

Verwandte Themen