特定のインデックスのオブジェクトのみを返すように配列を拡張しようとしています。ここでは、マップ機能が私にとって最良の選択であるように思われました。
extension Array {
func objectsAtIndexes(indexes: [Int]) -> [Element?]? {
let elements: [Element?] = indexes.map{ (idx) in
if idx < self.count {
return self[idx]
}
return nil
}.filter { $0 != nil }
return elements
}
}
let arr = ["1", "2", "3", "4", "5"]
let idx = [1,3,5]
let x = arr.objectsAtIndexes(idx) //returns: [{Some "2"}, {Some "4"}]
結果を文字列配列にキャストしようとすると、EXC_BAD_INSTRUCTION エラーが発生します。
let x = arr.objectsAtIndexes(idx) as? [String]
非オプションの配列を返す方法はありますか? [要素]を返そうとしましたか? 拡張機能から。これは同じエラーをスローします。