Calling instance method on each object in array

    for item in items {
        item.instanceMethod()
    }

What you are doing in

items.forEach { $0.instanceMethod() }
let mappedItems = items.map { $0.mappingInstanceMethod() }

is a clean and Swifty way. As explained in Is there a way to reference instance function when calling SequenceType.forEach?, the first statement cannot be reduced to

items.forEach(Item.instanceMethod)

There is one exception though: It works with init methods which take a single argument. Example:

let ints = [1, 2, 3]
let strings = ints.map(String.init)
print(strings) // ["1", "2", "3"]

have you tried

let mappedItems = items.map { $0.mappingInstanceMethod() }

note the () to call the method

Edit 1:

sample code:

class SomeObject {

    func someFunction() -> Int {
        return 5
    }
}

let array = [SomeObject(), SomeObject(), SomeObject()]

let ints = array.map { $0.someFunction()}
print(ints)

Tags:

Swift