gpt4 book ai didi

ios - 无法使用类型为 (String, Int) Swift 2 的索引为类型 [(String, Int)] 的值下标

转载 作者:搜寻专家 更新时间:2023-10-31 08:33:25 24 4
gpt4 key购买 nike

我正在学习 iOS 开发,最近在尝试操作元组数组时遇到了一个问题。

我收到以下错误消息:

Cannot subscript a value of type '[(String, Int)]' with an index of type '(String, Int)'

生成它的代码如下:

justStrings.append(filteredRestraunts[i2].0)

整个函数是这样的:

    func filterBySliderValue () -> [String] {
var filteredRestraunts: [(String, Int)]
for var i = 0; i < restraunts.count; i++ {
if restraunts[i].1 > Int(starSlider.value) {
filteredRestraunts.append(restraunts[i])
}
else {filteredRestraunts.append(("", 1))}
}
var justStrings: [String]
var i2 = 0
for i2 in filteredRestraunts {
justStrings.append(filteredRestraunts[i2].0)
}
return justStrings
}

这是数组限制:

var restraunts: [(String, Int)] = [("Dallas BBQ", 3), ("Chicken Express", 4), ("Starbucks", 5)]

提前致谢。

最佳答案

for i2 in filteredRestraunts {
justStrings.append(filteredRestraunts[i2].0)
}

i2 不是索引,而是遍历数组元素,即它是一个 (String, Int) 元组。你的意思可能是

for i2 in filteredRestraunts {
justStrings.append(i2.0)
}

补充说明:

  • 变量

    var i2 = 0

    根本没有使用,for循环中的i2是一个新的变量,其作用域是仅限于循环。

  • 变量 filteredRestrauntsjustStrings未初始化,因此这会导致额外的编译器错误。

  • 这两个循环都可以用更实用的方法替换,使用filtermap:

    let filteredRestraunts = restraunts.filter { $0.1 > Int(starSlider.value) }
    let justStrings = filteredRestraunts.map { $0.0 }

    当然可以组合成

    let justStrings = restraunts.filter { $0.1 > Int(starSlider.value) }.map { $0.0 }

关于ios - 无法使用类型为 (String, Int) Swift 2 的索引为类型 [(String, Int)] 的值下标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com