rde*_*mar 6 closures ios swift
indexOfObjectsPassingTest的声明:在Swift中看起来像这样
func indexesOfObjectsPassingTest(predicate: ((AnyObject!, Int, CMutablePointer<ObjCBool>) -> Bool)!) -> NSIndexSet!
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种各样的排列来让它发挥作用,但我很难过,特别是你如何处理这件作品,CMutablePointer<ObjCBool>) -> Bool)!.我发现它很混乱,当我第一次在objective-c中学习块时,你如何从声明转换为实际使用方法,而Swift的语法至少是令人困惑的.
这段代码在我的游乐场工作;)希望它有点帮助
import Cocoa
let list = [2, 3, 4, 5, 6, 7, 8]
func test (object: AnyObject!, index: Int, stop: CMutablePointer<ObjCBool>) -> Bool
{
let number = object as Int
return (number % 2 == 0) //for even numbers
}
let result: NSIndexSet = (list as NSArray).indexesOfObjectsPassingTest(test)
println("\(result.lastIndex)") //prints "6" (because 8%2=0)
Run Code Online (Sandbox Code Playgroud)
我将上面的示例转换为内联闭包(在Swift-eBook中描述).参数列表和返回类型由术语分隔in.
import Cocoa
let list = [2, 3, 4, 5, 6, 7, 8]
let result: NSIndexSet = (list as NSArray).indexesOfObjectsPassingTest({
(object: AnyObject!, index: Int, stop: CMutablePointer<ObjCBool>) -> Bool in
let number = object as Int
return (number % 2 == 0) //for even numbers
})
println("\(result.lastIndex)") //prints "6" (because 8%2=0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |