h.dale
h.dale

Reputation: 25

Replacing an array element with for in loop

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

Answers (2)

rmaddy
rmaddy

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

Yurii Petrov
Yurii Petrov

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

Related Questions