2015-09-29 2 views
0

Я пытаюсь расширить Array, чтобы вернуть вспомогательный массив. линия Пусть B = arr.objectsAtIndexes ([1,3,5]) дает ошибку «Значение типа '[Int]' не имеет элемента 'objectsAtIndexes' playground screenshotSwift: Расширение массива, Значение типа _ не имеет значения _

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 
    } 
} 

ответ

0

просто использовать это расширение ниже расширение декларации таким образом:

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) 

И заменить эту строку:

b = b.append(1) 

С этой линией:

b.append(1) 

И ваш результат будет:

enter image description here

0

После определения extension, следует вызвать метод. Проверьте это Extension reference

также .append не возвращает никакого значения, поэтому не следует назначать его

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]) 
// Do not assign to b 
b.append(1) 
Смежные вопросы