Jest klasa o nazwie 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
}
}
Mam tablicę Employee
obiektów. Teraz potrzebuję wyodrębnić id
s wszystkich tych obiektów w tej tablicy do nowej tablicy.
Znalazłem też to podobne pytanie . Ale jest w Objective-C, więc używa go valueForKeyPath
do osiągnięcia tego.
Jak mogę to zrobić w Swift?
map
robi - przekształca tablicę wEmployee
tablicęInt
wypełnionąid
polem. Co jest równoznaczne z powiedzeniem „wyodrębnij pole id ze wszystkich instancjiEmployee
i umieść je w tablicy”ids
wszystkichid
wartości z tablicyEmployee
s. Uwaga, pozostawia oryginalną tablicę nienaruszoną.array.map( { $0.id })
Swift 5 oferuje wiele sposobów uzyskiwania tablicy wartości właściwości z tablicy podobnych obiektów. W zależności od potrzeb możesz wybrać jeden z sześciu poniższych przykładów kodu Playground, aby rozwiązać problem.
1. Za pomocą
map
metodyW języku Swift typy zgodne z
Sequence
protokołem mająmap(_:)
metodę. Poniższy przykładowy kod pokazuje, jak go używać:2. Korzystanie z
for
pętli3. Korzystanie z
while
pętliZauważ, że w Swift, za kulisami,
for
pętla jest po prostuwhile
pętlą nadsequence
iteratorem (zobacz IteratorProtocol po więcej szczegółów).4. Używanie
struct
zgodnego z protokołamiIteratorProtocol
iSequence
5. Korzystanie z
Collection
rozszerzenia protokołu iAnyIterator
6. Używanie kvc and
NSArray
„svalue(forKeyPath:)
metodyZauważ, że ten przykład wymaga
class Employee
dziedziczenia zNSObject
.źródło