Swift 3:根据字典选择一个数组

时间:2017-02-02 18:26:14

标签: swift

我有一个弹出窗口控制器,它包含一个带有选项列表的表视图,类似于下拉选择列表。此表视图是动态填充的,具体取决于用户在父视图控制器上点击的“选择”按钮。我有几个阵列为各种选项集构建,以填充TVC。如何使用fieldIndex字典自动设置要用作弹出窗口的TVC数据源的数组?

class MyWidget : NSObject {

  var fieldIndex : [Int:String] = [
        0 : "make",
        1 : "model",
        2 : "year"
  ]

  var make = String()
  var model = String()
  var year = String()   
}

var makes = ["Acme", "Contoso", "Tradewinds"]
var models = ["Model1", "Model2", "Model3"]
var years = ["2015", "2016", "2017"]

Parent View Controller

3 个答案:

答案 0 :(得分:1)

您只需创建Int: [String]

类型的字典即可
class MyWidget : NSObject { 
// empty fieldData dictionary of type Int: [String]
var fieldData = [Int: [String]]()

}

//添加这样的数据

fieldData[0] = ["Acme", "Contoso", "Tradewinds"]
fieldData[1] = ["Model1", "Model2", "Model3"]
fieldData[2] = ["2015", "2016", "2017"]

//获取此类数据

let makeArray = fieldData[0] 

答案 1 :(得分:0)

我可能这样做。

#IfWinActive .py            ;;; scope limiter
:b*:print ::print(){Left}   ;;; I forget what b* does. The rest should be clear 
#IfWinActive                ;;; remove the scope limitation

不要犹豫为您的数据结构制作一流的模型。大部分时间它会使事情变得更加清晰。

答案 2 :(得分:0)

使用function的替代方法是直接在代码中将此逻辑添加到func getArray(_ positionInDictionary: Int) -> [String]{ var fieldData: [Int:[String]] = [0 : ["Choice 01", "Choice 02", "Choice 03"], 1 : ["Choice 11","Choice 12","Choice 13"]] if let str = fieldData[positionInDictionary]{ return str } else{ return []} } 中:

var dataArray = getArray(1)

<强>用法:

{{1}}

此外,这是IMO最简单,最快速的解决方案,您可以从任何地方检索字典。