所以,我有一个名为allBusinesses
的类型BusinessClass
的二维数组。我按以下方式填充此数组:
allBusinesses[0].append(contentsOf: [B11, B12, B13, B14, B15, B16])
allBusinesses[1].append(contentsOf: [B21, B22, B23, B24, B25, B26])
其中B11
,B12
... B26
都是BusinessClass
个实例。
我有另一个名为BusinessClass
的2D myOwnedBusinesses
数组。我按照以下方式创建它:
var myOwnedBusinesses: [[BusinessClass]] = [[], []]
在我的应用程序中,我有一个tableView
,其中包含allBusinesses
的所有元素,其中每个部分都包含数组第二维的行,因此:allBusinesses[section][row]
。当我在tableView
中选择一个随机单元格时,相应的BusinessClass
元素将按以下方式添加到myOwnedBusinesses
数组中:
myOwnedBusinesses[selectedSection].append(allBusinesses[selectedSection][selectedRow])
正如您可以想象的那样,如果我在第0行第3行选择单元格,然后在第0行第2行选择单元格,myOwnedBusinesses
的顺序将是错误的,相反allBusinesses
是什么。作为结论,我想在两个数组之间保持相同的顺序,即使myOwnedBusinesses
数组并不总是被填充。
答案 0 :(得分:0)
这是我的解决方案
let section0 = ["a", "b", "c", "d", "e", "f"]
let section1 = ["h", "i", "j", "k", "l", "m"]
section0.index(of: "b")
var all:[[String]] = [[],[]]
all[0].append(contentsOf: section0)
all[1].append(contentsOf: section1)
保持原始索引变平原始数组
let all_flat = all.flatMap {$0}
假设用户按此顺序选择单元格:“d”,“e”,“a”,“h”,“m”和“k”。
var myArray = [["d", "e", "a"], ["h", "m", "k"]]
然后对myArray
myArray = myArray.map {
$0.sorted { str1, str2 in
return all_flat.index(of: str1)! < all_flat.index(of: str2)!
}
}
对于你的情况:
let allBusinesses_flat = allBusinesses.flatMap {$0}
myOwnedBusinesses = myOwnedBusinesses.map {
$0.sorted { b1, b2 in
return all_flat.index(of: b1)! < all_flat.index(of: b2)!
}
}
这种解决方案价格昂贵,记忆明智。存储选定的索引将是更可取的。