如何根据 id 从 swift 对象数组中删除元素?

Tec*_*ain 4 arrays swift

我有一系列对象,例如。

var arrStudents = [S1,S2,S3,S4,S5]
Run Code Online (Sandbox Code Playgroud)

这里s1是学生班级的对象

class Student {

    var id:Int!
    var name:String!
    var address:String?
    var phone:Int!
}
Run Code Online (Sandbox Code Playgroud)

现在我想按学生 ID 从数组中删除一条记录。请告诉我该怎么做。

Ira*_*esh 6

循环遍历数组的所有索引并检查要删除的 id 是否匹配,如果是,它将过滤掉,您可以删除该索引:-)

let idToDelete = 10
if let index = arrStudents.index(where: {$0.id == idToDelete}) {
    array.remove(at: index)
}
Run Code Online (Sandbox Code Playgroud)

如果您想在单次迭代中删除多个值,您应该从最后一个索引到第一个索引开始循环,这样它就不会崩溃(越界错误)

var idsToDelete = [10, 20]
for id in idsToDelete {
        for (i,str) in arrStudents.enumerated().reversed()
        {
            if str.id == id
            {
                arrStudents.remove(at: i)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)