作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
indexesOfObjectsPassingTest 的声明:在 Swift 中看起来像这样,
func indexesOfObjectsPassingTest(predicate: ((AnyObject!, Int, CMutablePointer<ObjCBool>) -> Bool)!) -> NSIndexSet!
我已经尝试了各种排列来让它工作,但我很困惑,特别是你如何处理这篇文章,CMutablePointer<ObjCBool>) -> Bool)!
.当我第一次学习 objective-c 中的 block 时,我发现它已经足够令人困惑了,你如何将声明转换为方法的实际使用,而 Swift 的语法至少同样令人困惑。
最佳答案
这段代码在我的 Playground 中有效 ;) 希望它能有所帮助
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, 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)
关于ios - 如何使用 indexesOfObjectsPassingTest : in Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24041842/
我有一个名为 arrayToFilter 的 myObjects 数组。 myObject 的一个(元素?)是一组 bezierpaths。我将特定索引 (thispath) 的 bezierpath
indexesOfObjectsPassingTest 的声明:在 Swift 中看起来像这样, func indexesOfObjectsPassingTest(predicate: ((AnyOb
我有这个代码: NSIndexSet *indexes = [anOrderedSet indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx
我是一名优秀的程序员,十分优秀!