在二维数组中寻找单词

时间:2020-04-03 21:37:26

标签: arrays swift xcode indexing 2d

我试图在按下按钮时获取2D数组中单词的索引(即单词在数组中的位置)。我要查找的词是所按下按钮的标题。

@IBAction func buttonPressed(_ sender: UIButton) {

    let buttonSelected = sender.currentTitle!
    let findIndex = myArray.firstIndex(of: englishButtonSelected)!

}

构建代码时出现此错误:

无法将“字符串”类型的值转换为预期的参数类型“ [字符串]”

常量“ buttonSelected”是一个字符串。

我是新手,现在仍在学习。任何帮助深表感谢!谢谢!

使用Xcode 11.4

2 个答案:

答案 0 :(得分:0)

您快到了。 firstIndex将返回给定元素出现的第一个索引。由于myArray[[String]](二维数组),因此期望您放入[String],因为每个元素都是[String]。例如:

let myArray = [["A", "B"], ["C"], ["D", "E"]]
let index = myArray.firstIndex(of: ["D", "E"]) // index = 2

如果要获取按钮标题的“绝对”索引(在上面的示例中,这将对应于“ C”为2或“ E”为4的索引),则可以使用:

myArray.flatMap { $0 }.firstIndex(of: buttonTitle)

.flatMap将2D数组折叠为常规数组。如果要在其自己的子数组中找到按钮标题的索引,则必须遍历2D数组,并检查按钮标题的每个子数组的索引。

答案 1 :(得分:0)

在进行一些谷歌搜索之后,我发现了如何找到想要的输出。这给了我2D数组[[] [?]格式的确切索引!

for i in 0..<myArray.count {
    for j in 0..<myArray[i].count {
        if myArray[i][j] == buttonSelected {
            print (i, j)
        }
    }
}
相关问题