Reputation: 25
I have a simple array and would like to loop through it and replace all elements with false but am having a problem with the for in loop. An example of what I have done is below. I am new to Swift so any help with what the loop should look like would be sincerely appreciated.
struct ClubMembers {
var name: String
var active: Bool
}
func sampleMembers() -> [ClubMembers] {
let member1 = ClubMembers(name: "David", active: false)
let member2 = ClubMembers(name: "John", active: false)
let member3 = ClubMembers(name: "Mitchell", active: true)
return [member1, member2, member3]
}
Upvotes: 0
Views: 128
Reputation: 318814
You are attempting:
for _ in sampleMembers() { _ = false }
The _
means that you wish to ignore the value. You don't want to ignore the value, you need it.
for member in sampleMembers() { member.active = false }
But this has a couple of issues. member
is read-only and the array is gone as soon as this line completes.
So you need to iterate each index of the array and update each value:
var members = sampleMembers()
for i in members.indices {
members[i].active = false
}
Upvotes: 1
Reputation: 341
example:
struct ClubMembers {
var name: String
var active: Bool
}
func sampleMembers() -> [ClubMembers] {
let member1 = ClubMembers(name: "David", active: true)
let member2 = ClubMembers(name: "John", active: true)
let member3 = ClubMembers(name: "Mitchell", active: true)
return [member1, member2, member3]
}
var array = sampleMembers()
for i in 0..<array.count {
array[i].active = false
}
for i in 0..<array.count {
print(array[i].active)
}
Upvotes: 0