Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift-搜索和替换元组中的值_Swift_Search_Replace_Tuples - Fatal编程技术网

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")
]