好吧,这应该不会太难,但周日早上证明我错了......
我有一个Arraywith 结构,并且只想删除一个与其 name 属性匹配的结构String。例如:
struct Person {
let name: String
}
var myPersons =
[Person(name: "Jim"),
Person(name: "Bob"),
Person(name: "Julie"),
Person(name: "Bob")]
func removePersonsWith(name: String) {
myPersons = myPersons.filter { $0.name != name }
}
removePersonsWith(name: "Bob")
print(myPersons)
Run Code Online (Sandbox Code Playgroud)
结果是:
[Person(name: "Jim"), Person(name: "Julie")]
Run Code Online (Sandbox Code Playgroud)
但我怎样才能只删除一个鲍勃呢?
filter过滤所有符合条件的项目。
firstIndex返回第一个符合条件的项目的索引。
func removePersonsWith(name: String) {
if let index = myPersons.firstIndex(where: {$0.name == name}) {
myPersons.remove(at: index)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,该函数的名称具有误导性。应该是removeAPersonWith;-)
| 归档时间: |
|
| 查看次数: |
1478 次 |
| 最近记录: |