I am trying to iterate through an array using enumerateObjectsUsingBlock to fetch data. How to use enumerateObjectsUsingBlock in Swift ? Please help me with an example.
enumerated()Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
There several ways to loop through an array in Swift, but using the enumerated() method is one of my favorites because it iterates over each of the items while also telling you the items's position in the array.
enumerateObjectsUsingBlock:
is not a method on Array but on NSArray. If you want to use it you'll need an instance of NSArray rather than Array.
import Foundation var array: NSArray = ["Some", "strings", "in", "an", "array"] array.enumerateObjectsUsingBlock({ object, index, stop in //your code })
if you have an existing array, you can cast a swift Array
to an NSArray
using as
var cocoaArray = swiftArray as NSArray
or if you simply import Foundation
the Swift compiler will automatically bridge your Swift array to an NSArray and all the NSArray methods will become available for you.
or you can just use Swift's enumerate
function:
for (index, value) in enumerate(array) { // your code }
In Swift 2, enumerate
is no longer a free function, now it's in a protocol extension!
for (index, value) in array.enumerate() { // your code }
And in Swift 3, enumerate
was renamed to enumerated
for (index, value) in array.enumerated() { // your code }
The new enumerate function returns a tuple with indexer and value so you can get similar functionality to enumerateObjectsUsingBlock.
func myBlock (index: Int, value: Int, inout stop: Bool) -> Void { println("Index: \(index) Value: \(value)") if index == 3 { stop = true } } var array = [1,2,3,4,5] for (index, value) in enumerate(array) { var stop = false; myBlock(index, value, &stop) if stop { break; } } //Output... //Index: 0 Value: 1 //Index: 1 Value: 2 //Index: 2 Value: 3 //Index: 3 Value: 4
I imagine they haven't exposed enumerateObjectsUsingBlock as you can replicate the functionality with the above code.
EDIT: Anonymous function was crashing my playground so used an inline function. Also added using stop variable for illustrative purposes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With