Es gibt eine Klasse namens Employee
.
class Employee {
var id: Int
var firstName: String
var lastName: String
var dateOfBirth: NSDate?
init(id: Int, firstName: String, lastName: String) {
self.id = id
self.firstName = firstName
self.lastName = lastName
}
}
Und ich habe eine Reihe von Employee
Objekten. Was ich jetzt brauche, ist das id
s aller dieser Objekte in diesem Array in ein neues Array zu extrahieren .
Ich fand das auch ähnlich Frage gefunden . Aber es ist in Objective-C, also wird es verwendet valueForKeyPath
, um dies zu erreichen.
Wie kann ich das in Swift machen?
map
tut - es transformiert ein Array vonEmployee
in ein Array vonInt
, gefüllt mit demid
Feld. Das entspricht der Aussage "Extrahiere das ID-Feld aus allen Instanzen vonEmployee
und füge sie in ein Array ein"ids
alleid
Werte aus dem Array vonEmployee
s aufruft. Beachten Sie, dass das ursprüngliche Array intakt bleibt.array.map( { $0.id })
Swift 5 bietet viele Möglichkeiten, um ein Array von Eigenschaftswerten aus einem Array ähnlicher Objekte abzurufen. Je nach Ihren Anforderungen können Sie eines der sechs folgenden Playground-Codebeispiele auswählen , um Ihr Problem zu lösen.
1.
map
Methode verwendenMit Swift
Sequence
haben protokollkonforme Typen einemap(_:)
Methode. Der folgende Beispielcode zeigt die Verwendung:2.
for
Schleife verwenden3.
while
Schleife verwendenBeachten Sie, dass bei Swift hinter den Kulissen eine
for
Schleife nur einewhile
Schleife übersequence
den Iterator eines S ist ( weitere Informationen finden Sie unter IteratorProtocol ).4. Mit einem
struct
dass KonformIteratorProtocol
undSequence
Protokollen5. Verwenden der
Collection
Protokollerweiterung undAnyIterator
6. Verwendung KVC und
NSArray
‚svalue(forKeyPath:)
VerfahrenBeachten Sie, dass dieses Beispiel
class Employee
von erben mussNSObject
.quelle