2015-11-05 66 views
1

如何在swift中查找二维数组中的对象的索引?下面的代码给我的错误:Swift 2 - `indexOf` 2D数组

Cannot convert value of type '[String]' to expected argument type '@noescape ([String]) throws -> Bool'

let arrayToMatch = ["matched", "YES"] 

var arrayOfArrays = [["aaa","bbb"], ["aaa","bbb"],["matched", "YES"],["matched","eee"],["ccc","ddd"]] 

let findIndex = arrayOfArrays.indexOf(arrayToMatch) // 2 ?? 

回答

2

这是因为indexOf方法有参数,它是一个封闭。它可以是这样的

let findIndex = arrayOfArrays.indexOf { 
    (stringArray) -> Bool in 
    return arrayToMatch == stringArray 
} 

,但它可以被缩短到简单的一行

let findIndex = arrayOfArrays.indexOf { $0 == arrayToMatch } 

也请记住,返回值是一个可选的(返回nil没有找到时),只有返回匹配的collection的元素的第一个索引。