Swift-搜索和替换元组中的值
我有这样的元组:Swift-搜索和替换元组中的值,swift,search,replace,tuples,Swift,Search,Replace,Tuples,我有这样的元组:[(id:String,name:String,years:Int,city:String)] 我应该怎么做才能搜索特定的id并更改该id的city?swift中的元组是不可变的,一种解决方案应该是先用删除列表中的元素(其中:),然后删除所有元素(其中:(然后在数组中再次插入它。第二个选项应该是创建一个实现此元组的类。您可以使用搜索元组数组来查找第一个元素的索引以匹配您的条件。在您的情况下,您需要匹配特定的id,因此您可以使用一个闭包,例如{$0.id==“2”} 一旦找到该索引
[(id:String,name:String,years:Int,city:String)]
我应该怎么做才能搜索特定的
id
并更改该id
的city
?swift中的元组是不可变的,一种解决方案应该是先用删除列表中的元素(其中:),然后删除所有元素(其中:(
然后在数组中再次插入它。第二个选项应该是创建一个实现此元组的类。您可以使用搜索元组数组来查找第一个元素的索引以匹配您的条件。在您的情况下,您需要匹配特定的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)
输出
使用
struct
而不是tuple
也就是说,您应该在此处使用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")
]
搜索代码将保持不变。的可能重复项
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")
]