【发布时间】:2019-10-03 13:10:20
【问题描述】:
我有类似的元组:[(id:String, name:String, years:Int, city:String)]
我应该如何搜索某些id 并更改该id 的city?
【问题讨论】:
标签: swift search replace tuples
我有类似的元组:[(id:String, name:String, years:Int, city:String)]
我应该如何搜索某些id 并更改该id 的city?
【问题讨论】:
标签: swift search replace tuples
您可以使用firstIndex(where:) 搜索元组数组,以找到第一个元素的索引以匹配您的条件。在您的情况下,您希望匹配特定的 id,因此您将使用诸如 { $0.id == "2" } 之类的闭包。
一旦找到该索引,就可以使用它来更新数组内的元组。
示例:
var info: [(id: String, name: String, years: Int, city: String)] = [
("1", "Fred", 35, "Bedrock"),
("2", "Wilma", 32, "Bedrock")
]
if let idx = info.firstIndex(where: { $0.id == "2" }) {
info[idx].city = "Boulder"
}
print(info)
输出
[(id: "1", name: "Fred", years: 35, city: "Bedrock"), (id: "2", name: "Wilma", years: 32, city: "Boulder")]
使用struct 代替元组
也就是说,您真的应该在此处使用struct 来包含您的值。 Swift 中的元组实际上是为了临时使用(例如从函数返回多个值),因此最好定义一个 struct 来保存您的值:
struct Record {
var id: String
var name: String
var years: Int
var city: String
}
var info: [Record] = [
.init(id: "1", name: "Fred", years: 35, city: "Bedrock"),
.init(id: "2", name: "Wilma", years: 32, city: "Bedrock")
]
搜索代码将保持不变。
【讨论】: