2015-06-09 63 views
0

我到目前为止这个声明:多个参数

var meals : [String : Array<String>] 

meals = ["Option1": ["01-01-2015","05-02-2015"], 
     "Option2": ["05-01-2015","10-04-2015"], 
     "Option3": ["03-02-2015", "07-07-2015"]] 

我想这样做,但我不知道如何申报meals变量:

meals = ["Option1": ["01-01-2015","05-02-2015"], 2 
     "Option2": ["05-01-2015","10-04-2015"], 2 
     "Option3": ["03-02-2015", "07-07-2015", "09-08-2015"], 3] 

我想将第三个参数添加到字典数组中,即整数,因此每个OptionX都必须有2个参数:日期数组和一个整数。

我知道字典必须是键值,所以我想知道如何为每个数组添加3个元素。我想我必须创建数组的数组?

回答

3

你可以使用一个元组,我会明确说明字典类型,以使事情更清楚一点:

let meals: [String: ([String], Int)] = ["Option1": (["01-01-2015","05-02-2015"], 2), 
             "Option2": (["05-01-2015","10-04-2015"], 2), 
             "Option3": (["03-02-2015", "07-07-2015", "09-08-2015"], 3)] 

if let option1 = meals["Option1"] { 
    println(option1.0) // Prints: "[01-01-2015, 05-02-2015]" 
    println(option1.1) // Prints: "2" 
} 

或者,你可以使用结构:

struct MealOption { 
    // More descriptive variable names would be a good idea here... 
    let a: [String] 
    let b: Int 
} 

let meals: [String: MealOption] = ["Option1": MealOption(a: ["01-01-2015","05-02-2015"], b: 2)] 

if let option1 = meals["Option1"] { 
    println(option1.a) // Prints: "[01-01-2015, 05-02-2015]" 
    println(option1.b) // Prints: "2" 
} 
+0

的感谢! @ABakerSmith – Ruben

+0

我在这一行中得到一个错误:let meals = [String:MealOption] = [“Option1”:MealOption(a:[“01-01-2015”,“05-02-2015”],b:2 )]'它说:“不能分配给这个表达式的结果”@ABakerSmith – Ruben

+0

对不起,我有一个额外的'='在那里意外。我已经更新了我的答案。 – ABakerSmith