【问题标题】:Swift - Search and Replace value in TupleSwift - 在元组中搜索和替换值
【发布时间】:2019-10-03 13:10:20
【问题描述】:

我有类似的元组:[(id:String, name:String, years:Int, city:String)]

我应该如何搜索某些id 并更改该idcity

【问题讨论】:

标签: swift search replace tuples


【解决方案1】:

您可以使用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")
]

搜索代码将保持不变。

【讨论】:

    猜你喜欢
    • 2012-01-29
    • 2012-08-22
    • 2017-02-03
    • 2020-09-11
    • 1970-01-01
    • 2010-11-07
    • 2020-08-20
    • 2018-02-15
    • 2011-10-31
    相关资源
    最近更新 更多