将简单数组连接到嵌套数组逻辑混乱
Connecting a simple array to a nested array logic confusion
假设我的第一个 table 控制器由一个简单数组填充。
var number = ["one", "two", "three"].
然后我的第二个 table 控制器填充了一个嵌套数组。
var letter = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "I"]]
如果用户在第一个 table 控制器中选择 "one",则用户将能够在第二个 table 控制器中看到字母数组项 "a, b, c"。 "two" 和 "d,e,f," 等也是如此。
我知道索引路径指的是一个部分和一行......但这是我的逻辑紧张的地方。
让我试着解释一下我的困惑。所以理论上,我在数字数组中选择"three"。据我了解,这将给我一个 [0][2] 的索引路径......第 0 节,第 2 行。考虑到这一点,我在这里必须使用的唯一实际值是 2,这是一行价值。因此,我应该如何将这个纯行值与字母数组中的嵌套 array/section 连接起来?
与大多数编程语言一样,swift 数组中的第一项是 0
let array = [1,2,3]
array[0] // array[0] = 1
所以当你得到2的行值并得到
number[indexpath.row] //this will return "three"
您将能够将其用于您的字母数组
letter[indexpath.row] //will return ["g", "h", "I"] when row = 2
您还应该能够看到,当您点击 UITableView
中的第三行时,它将 return 2 用于 indexpath.row
Swift自带的集合类型Dictionary.Dictionaries是键值关联的无序集合。
与数组不同,您可以为每个值设置索引值。
var arr1=["a","b","c"]
var arr2=["d","e","f"]
var arr3=["g","h","i"]
var dict = ["one":arr1,"two":arr2,"three":arr3]
print(dict["one"]) // access the dictionary through its key value
输出将是 ["a"、"b"、"c"]
如果您想在 Swift 中阅读更多关于词典的信息,可以参考此 link。https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html
在你的情况下你可以初始化两个数组
var keys=["one","two","three"];
var arr1=["a","b","c"]
var arr2=["d","e","f"]
var arr3=["g","h","i"]
var dict = ["one":arr1,"two":arr2,"three":arr3]
您可以使用键数组填充第一个 table 视图。
之后,您可以从 did select 方法中获取 selected 值,以获取数组值来填充您的第二个 table 视图
var selectedStr = "one"
var newArr = dict[selectedStr]//use this array to populate 2nd Table View.
希望对您有所帮助。
快乐编码.. !!
假设我的第一个 table 控制器由一个简单数组填充。
var number = ["one", "two", "three"].
然后我的第二个 table 控制器填充了一个嵌套数组。
var letter = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "I"]]
如果用户在第一个 table 控制器中选择 "one",则用户将能够在第二个 table 控制器中看到字母数组项 "a, b, c"。 "two" 和 "d,e,f," 等也是如此。 我知道索引路径指的是一个部分和一行......但这是我的逻辑紧张的地方。
让我试着解释一下我的困惑。所以理论上,我在数字数组中选择"three"。据我了解,这将给我一个 [0][2] 的索引路径......第 0 节,第 2 行。考虑到这一点,我在这里必须使用的唯一实际值是 2,这是一行价值。因此,我应该如何将这个纯行值与字母数组中的嵌套 array/section 连接起来?
与大多数编程语言一样,swift 数组中的第一项是 0
let array = [1,2,3]
array[0] // array[0] = 1
所以当你得到2的行值并得到
number[indexpath.row] //this will return "three"
您将能够将其用于您的字母数组
letter[indexpath.row] //will return ["g", "h", "I"] when row = 2
您还应该能够看到,当您点击 UITableView
中的第三行时,它将 return 2 用于 indexpath.row
Swift自带的集合类型Dictionary.Dictionaries是键值关联的无序集合。 与数组不同,您可以为每个值设置索引值。
var arr1=["a","b","c"]
var arr2=["d","e","f"]
var arr3=["g","h","i"]
var dict = ["one":arr1,"two":arr2,"three":arr3]
print(dict["one"]) // access the dictionary through its key value
输出将是 ["a"、"b"、"c"]
如果您想在 Swift 中阅读更多关于词典的信息,可以参考此 link。https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html
在你的情况下你可以初始化两个数组
var keys=["one","two","three"];
var arr1=["a","b","c"]
var arr2=["d","e","f"]
var arr3=["g","h","i"]
var dict = ["one":arr1,"two":arr2,"three":arr3]
您可以使用键数组填充第一个 table 视图。 之后,您可以从 did select 方法中获取 selected 值,以获取数组值来填充您的第二个 table 视图
var selectedStr = "one"
var newArr = dict[selectedStr]//use this array to populate 2nd Table View.
希望对您有所帮助。 快乐编码.. !!