ios – 如何在Swift中使用indicesOfObjectsPassingTest:

indexOfObjectsPassingTest的声明:在 Swift中看起来像这样
func indexesOfObjectsPassingTest(predicate: ((AnyObject!,Int,CMutablePointer<ObjCBool>) -> Bool)!) -> NSIndexSet!

我已经尝试了各种各样的排列来让它工作,但我很难过,特别是你如何处理这件作品,CMutablePointer< ObjCBool​​>) – >布尔)!我发现它很混乱,当我第一次在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)

直列关闭

我将上面的示例转换为内联闭包(在Swift-eBook中描述).参数列表和返回类型由术语in分隔.

import Cocoa

let list = [2,8]

let result: NSIndexSet = (list as NSArray).indexesOfObjectsPassingTest({
(object: AnyObject!,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)

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...