Search code examples
arraysswiftextend

Swift: Extending Array, Value of type _ has no member _


I'm trying to extend Array to return a sub array. the line let b = arr.objectsAtIndexes([1,3,5]) produces the error "Value of type '[Int]' has no member 'objectsAtIndexes' playground screenshot

import Foundation

var arr = [Int](6..<19)
let b = arr.objectsAtIndexes([1,3,5])
b = b.append(1)

extension Array {
    func objectsAtIndexes(indexes: [Int]) -> [Element] {
        var returnArray = [Element]()
        for i in indexes {
            returnArray.append(self[i])
        }
        return returnArray
    }
}

Solution

  • Just use that extension below the extension declaration this way:

    import Foundation
    
    extension Array {
        func objectsAtIndexes(indexes: [Int]) -> [Element] {
            var returnArray = [Element]()
            for i in indexes {
                returnArray.append(self[i])
            }
            return returnArray
        }
    }
    
    var arr = [Int](6..<19)
    var b = arr.objectsAtIndexes([1,3,5])
    b = b.append(1)
    

    And replace this line:

    b = b.append(1)
    

    With this line:

    b.append(1)
    

    And your result will be:

    enter image description here