2015-04-09 3 views
2

Мне нужно выполнить действие после полного перечисления всех объектов в массиве. Как добавить блок завершения в enumerateObjectsWithOptions(_:usingBlock:) в Swift.Добавить блок завершения в enumerateObjectsWithOptions

Или как узнать, когда enumerateObjectsWithOptions(_:usingBlock:) завершено.

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

ответ

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:)

Если вы хотите, я могу попробовать помогите вам добавить блок в конце, но я думаю, что это не имеет смысла.

2

Метод enumerateObjectsWithOptions в NSArray is 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") 
Смежные вопросы