Il y a une classe appelée 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
}
}
Et j'ai une panoplie d' Employee
objets. Ce dont j'ai maintenant besoin, c'est d'extraire le id
s de tous ces objets de ce tableau dans un nouveau tableau.
J'ai également trouvé cette question similaire . Mais c'est en Objective-C donc il est utilisé valueForKeyPath
pour accomplir cela.
Comment puis-je faire cela dans Swift?
map
fait le - il transforme un tableau deEmployee
en un tableau deInt
, rempli avec leid
champ. Ce qui équivaut à dire "extraire le champ id de toutes les instances deEmployee
et les mettre dans un tableau"ids
de toutes lesid
valeurs du tableau deEmployee
s. Notez qu'il laisse le tableau d'origine intact.array.map( { $0.id })
Swift 5 offre de nombreuses façons d'obtenir un tableau de valeurs de propriété à partir d'un tableau d'objets similaires. Selon vos besoins, vous pouvez choisir l'un des six exemples de code Playground suivants pour résoudre votre problème.
1. Utilisation de la
map
méthodeAvec Swift, les types conformes au
Sequence
protocole ont unemap(_:)
méthode. L'exemple de code suivant montre comment l'utiliser:2. Utilisation de la
for
boucle3. Utilisation de la
while
boucleNotez qu'avec Swift, dans les coulisses, une
for
boucle n'est qu'unewhile
boucle sursequence
l'itérateur d'un (voir IteratorProtocol pour plus de détails).4. Utilisation d'un
struct
conforme aux protocolesIteratorProtocol
etSequence
5. Utilisation de l'
Collection
extension de protocole etAnyIterator
6. Utilisation de
NSArray
lavalue(forKeyPath:)
méthode KVC etNotez que cet exemple nécessite
class Employee
d'hériter deNSObject
.la source