将完成块添加到enumerateObjectsWithOptions

时间:2015-04-09 11:42:51

标签: ios swift asynchronous objective-c-blocks enumeration

我需要在完全枚举数组中的所有对象后执行操作。如何在Swift中向enumerateObjectsWithOptions(_:usingBlock:)添加完成块。

或如何知道enumerateObjectsWithOptions(_:usingBlock:)何时完成。

allVisitors.enumerateObjectsWithOptions( NSEnumerationOptions.Concurrent, usingBlock: { (obj, idx, stop) -> Void in
})

2 个答案:

答案 0 :(得分:3)

NSArray中的方法enumerateObjectsWithOptions为synchronous

因此,在为数组中的每个元素执行块之后,将在下一行写入的内容执行。 These users tested the version without options

E.g。

allVisitors.enumerateObjectsWithOptions( NSEnumerationOptions.Concurrent, usingBlock: { (obj, idx, stop) -> Void in
    // do your stuff
})

println("now allVisitors.enumerateObjectsWithOptions has done")

答案 1 :(得分:1)

方法:enumerateObjectsWithOptions(_:usingBlock:)是同步的。

  

默认情况下,枚举从第一个对象开始并继续   串行通过数组到最后一个对象。你可以指定   NSEnumerationConcurrent和/或NSEnumerationReverse作为枚举   用于修改此行为的选项。此方法同步执行。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/#//apple_ref/occ/instm/NSArray/enumerateObjectsWithOptions:usingBlock

因此,您不需要添加完成块来了解完成时间,只需在enumerateObjectsWithOptions(_:usingBlock:)下面写下您要执行的内容

如果你愿意,我可以尝试帮助你在最后添加一个块,但我认为这没有意义。