Добавить блок завершения в enumerateObjectsWithOptions

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

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

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

person Madhu    schedule 09.04.2015    source источник


Ответы (2)


Метод enumerateObjectsWithOptions в NSArray: синхронно.

Итак, то, что вы напишете в следующей строке, будет выполнено после того, как ваш блок будет выполнен для каждого элемента в массиве. Эти пользователи протестировали версию без параметров.

E.g.

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

println("now allVisitors.enumerateObjectsWithOptions has done")
person Luca Angeletti    schedule 09.04.2015

Метод: 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:)

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

person Javier Flores Font    schedule 09.04.2015