我正在学习iOS开发,最近在试图操作一个元组时遇到了一个问题。
我收到以下错误消息:
不能用类型为“(String,Int)”的索引下标类型“(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)]提前谢谢。
发布于 2015-09-06 17:42:06
在……里面
for i2 in filteredRestraunts {
justStrings.append(filteredRestraunts[i2].0)
}i2不是索引,而是遍历数组元素,即它是一个(String, Int)元组。你的意思可能是
for i2 in filteredRestraunts {
justStrings.append(i2.0)
}补充意见:
i2是一个新变量,其范围仅限于循环。filteredRestraunts和justStrings没有初始化,因此应该会导致额外的编译器错误。filter和map的功能更强的方法来代替:
设filteredRestraunts = restraunts.filter {0.1> Int(starSlider.value) } let justStrings = filteredRestraunts.map { $0.0 }
当然可以结合到
设justStrings = restraunts.filter {0.1> Int(starSlider.value) }.map {0.0}https://stackoverflow.com/questions/32426300
复制相似问题