i have objects
var person1 = Person() person1.name = "Joe" person1.lastName = "Doe" person1.age = 21 var person2 = Person() person2.name = "Julia" person2.lastName = "Ivanova" person2.age = 22 var person3 = Person() person3.name = "Irina" person3.lastName = "Petrova" person3.age = 25 var person9 = Person() person9.name = "Vova" person9.lastName = "Vovin" person9.age = 32 var person10 = Person() person10.name = "Masha" person10.lastName = "Golovanova" person10.age = 20 var person11 = Person() person11.name = "Petra" person11.lastName = "Andreeva" person11.age = 27
and multi array
var array = [[person1, person2, person3], [person9, person10, person11]]
how can I iterate through array to get for example a person with name="Masha"
thanks in advance
I would try this:
var array:[[Person]] = [[person1, person2, person3], [person9, person10, person11]] /*Casting it like this should keep from getting an error later and/or having to recast the objects*/ for people in array { /*This is going to look at each array in arrays, and call each one 'people' within this loop*/ for person in people { /*Same thing, this is going to look at each item in the people array and call each one 'person' within this loop*/ if person.name == "Masha" { return person } } }
An interesting way of solving this would be to leverage the flatMap function of Swift.
var array = [[person1, person2, person3], [person9, person10, person11]] let flatArray = array.flatMap { $0 }
flatArray now is [person1, person2, person3, person9, person10, person11]
of type Array<Person>
.
Then you can iterate on flatArray to find what you want :
for person in flatArray { if person.name == "Masha" { // Do something } }
You could even go further by using Swift 2.0 because it allows you to put a where clause in the for :
for person in flatArray where person.name == "Masha" { // Do something }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With