Swift: IndexPath 로 2d array 접근하기 - kirseia/study GitHub Wiki

...
let items:[String](/kirseia/study/wiki/String) = ["hello", "world"], ["izone", "wizone"](/kirseia/study/wiki/"hello",-"world"],-["izone",-"wizone")
let indexPath = IndexPath(row: 1, section: 1)

let result = items[indexPath] 

print(result) // == wizone 
...

extension Collection where Index == Int, Iterator.Element: Collection, Iterator.Element.Index == Int {
    subscript(indexPath: IndexPath) -> Iterator.Element.Iterator.Element? {
        if count <= indexPath.section {
            return nil
        }

        let rows = self[indexPath.section]
        if rows.count <= indexPath.row {
            return nil
        }

        return rows[indexPath.row]
    }
}

  • indexPath 로 2차원 배열 접근하는 extension 이야기가 나와서 삽질해서 만들어보았음.
  • return 값이 Iterator.Element.Iterator.Element 이 되어야 하는데 Element 로 놓고 삽질했었음 -_-)
  • 어딘가에서 유용하게 써먹을 일이 있을지도...
  • index range 를 넘어갈 수 있으니 array range 체크하고, return 값을 Iterator. ... .Element? 로 옵셔널로 하면 좋을 듯