如何在调用ObjC类时正确使用短Swift闭包

时间:2015-06-20 13:04:44

标签: swift closures nsindexset

我希望在调用{$0 > 1}类时使用简短形式的结束NSIndexSet

let indexSet: NSIndexSet = getSomeIndexSet()
let filteredIndexSet = indexSet.indexesPassingTest(){$0 > 1}

但它给了我

  

无法调用' indicesPassingTest'使用类型'((_) - > _)'

的参数列表

但这有效:indexSet.indexesPassingTest(){(i,s) in i > 1}虽然类型名称仍然不存在。

这是一个错误还是我错过了什么?

1 个答案:

答案 0 :(得分:5)

错误消息说明你做错了什么。传递给块的参数不是两个不同的参数,而是一个单元参数,它是元组。因此,您必须从元组中访问每个元素。

根据Martin R的评论,似乎闭包必须与2个参数匹配。因此,可以使用$ 0或$ 1,或者只使用一个,然后$ 0变为元组。

let filteredIndexSet = indexSet.indexesPassingTest { $0.0 > 20 }

$ 0.0 表示元组中的第一项是索引。