Ich bin neu in Swift. Ich habe eine Basisklasse:
%Vor%Ich möchte eine foo-Sammlungsklasse implementieren:
%Vor%Aber der Compiler beklagt sich:
Vererbung von einem Nicht-Protokoll-Nicht-Klassen-Typ von 'Array'
Ich habe andere Syntax ausprobiert (z. B. [foo]
und NSMutableArray<foo>
), aber keiner von ihnen besteht die Compiler-Prüfung.
Das sollte einfach sein, aber ich habe den ganzen Tag gegoogelt und konnte es nicht herausfinden. Weiß jemand, ob es möglich ist und wenn ja, die richtige Syntax?
Swifts Array
type ist eine Struktur und in Swift müssen Basisklassen tatsächliche Klassen sein (also class Foo
) und keine Strukturen.
Sie können also leider nicht, was Sie versuchen, durch Vererbung von Array
tun. Sie könnten jedoch das Array als ein Feld in Ihrer Klasse speichern und Methoden an es weiterleiten, möglicherweise alle Protokolle implementieren, die Sie unterstützen möchten, und so weiter.
In Swift ist Array eine Struktur, keine Klasse. Um eine Klasse zu haben, die eine Array-Unterklasse ist, müssen Sie NSArray, sein Gegenstück zu Objective-C, verwenden.
Zum Beispiel
%Vor%In Swift 2.x können Sie eine Protokollerweiterung verwenden.
%Vor%-Protokollerweiterungen bieten "Einfügepunkte", um Klassen zu erweitern, die keine Klassen sind, Klassen, die Sie nicht besitzen, usw.
Tags und Links arrays inheritance swift