Swift - 搜索并替换元组中的值

Bog*_*nov 0 search replace tuples swift

我有一种元组:[(id:String, name:String, years:Int, city:String)]

我应该做什么来寻找某些id并改变cityid

vac*_*ama 5

您可以使用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)
Run Code Online (Sandbox Code Playgroud)

输出

[(id: "1", name: "Fred", years: 35, city: "Bedrock"),
 (id: "2", name: "Wilma", years: 32, city: "Boulder")]
Run Code Online (Sandbox Code Playgroud)

使用 astruct代替元组

也就是说,您确实应该使用struct此处来包含您的值。Swift 中的元组实际上是为了临时使用(例如从函数返回多个值),因此struct最好定义 a 来保存您的值:

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")
]
Run Code Online (Sandbox Code Playgroud)

搜索代码将保持不变。