Подтвердить что ты не робот

Swift 2: защита в петле?

Каков правильный способ использования защиты внутри цикла for?

for (index,user) in myUsersArray.enumerate() {

    guard user.id != nil else {
        print("no userId")
        //neither break / return will keep running the for loop
    }

    if user.id == myUser.id {

        //do stuff

    }
}
4b9b3361

Ответ 1

Есть несколько способов сделать некоторые условные обозначения:

Вы можете поместить условие для цели. Он будет вызываться для каждой итерации

for (index, user) in myUsersArray.enumerate() where check() {}
for (index, user) in myUsersArray.enumerate() where flag == true {}

Вы можете проверить что-то внутри и пропустить итерацию или остановить цикл:

for (index, user) in myUsersArray.enumerate() {
    guard check() else { continue }
    guard flag else { break }
}

В вашем случае я напишу что-то вроде этого:

for (index, user) in myUsersArray.enumerate() {
    guard let userId = user.id, userId == myUser.id else { continue }

    // do stuff with userId
}

Ответ 2

@Арсенс правильный, но я думаю, что это легче понять.

let ints = [1,2,3,4,5]

for (index,value) in ints.enumerate() {

        guard value != 1 else {
            print("Guarded \(value)")
            continue
        }

        print("Processed \(value)")
}

Ответ 3

for (index,user) in myUsersArray.enumerate() {

    guard let userId = user.id else {
        print("no userId")
        continue;
    }

    if userId == myUser.id {

        //do stuff

    }
}