Ric*_*hiy 2 arrays collections subscript ios swift
我想的扩展名添加到阵列的阵列,以检索Element与所述IndexPath大小为2:
let array: [[String]] = ....
let indexPath = IndexPath(indexes: [0, 0])
let string = array[indexPath]
Run Code Online (Sandbox Code Playgroud)
我得到一个错误无法通过下标下标分配是get-only同时实现以下扩展:
extension Array where Element : Collection, Element.Index == Int {
subscript(indexPath: IndexPath) -> Element.Iterator.Element {
get {
return self[indexPath.section][indexPath.item]
}
set {
self[indexPath.section][indexPath.item] = newValue
}
}
}
Run Code Online (Sandbox Code Playgroud)
出现这种错误的原因是什么?如何在下标中添加变异选项 ?
为了改变嵌套数组,你必须要求它
Element : MutableCollection
Run Code Online (Sandbox Code Playgroud)
而不是Element : Collection.
您还可以定义两个扩展:只读集合的只读下标和可变集合的读写下标:
extension Collection where Index == Int, Element : Collection, Element.Index == Int {
subscript(indexPath: IndexPath) -> Element.Iterator.Element {
return self[indexPath[0]][indexPath[1]]
}
}
extension MutableCollection where Index == Int, Element : MutableCollection, Element.Index == Int {
subscript(indexPath: IndexPath) -> Element.Iterator.Element {
get {
return self[indexPath[0]][indexPath[1]]
}
set {
self[indexPath[0]][indexPath[1]] = newValue
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |