包含使用Swift的键的多个值的字典

时间:2016-01-06 08:33:34

标签: arrays swift dictionary

是否可以拥有一个字典,其中包含一个键的多个值? 例如,我有多个ID(101,102,103,104 ...),所有这些ID都有一些值(颜色:绿色,数字:4,城市:纽约)。我是编程新手,不知道应该如何存储它。

我在考虑自定义类:

class myClass: NSObject {
    var ID: Int
    var colour: String
    var number: Int
    var city: String

    init(ID: Int, colour: String, number: Int, city: String) {
        self.ID = ID
        self.colour = colour
        self.number = number
        self.city = city
    }
}

创建一些变量var myData = myClass()并且只是那里的所有内容,但是我怎么能访问让我们说ID 102并修改它的颜色? 所以我的问题是如何存储我的示例中提供的数据,并且可以选择特定ID并修改属于该ID的值。

3 个答案:

答案 0 :(得分:2)

字典必须包含每个键的一个值。但是,该值可以是数组,字典,也可以是对象等,因此没有实际限制。

由于类的实例存储为引用,因此字典值可以是对类实例的引用。因此,您可以从字典中提取对实例的引用,然后修改实例。请注意,持有对同一实例的引用的任何人都将看到相同的更改。

答案 1 :(得分:1)

假设您有两个班级实例

let item101 = MyClass(ID: 101, colour: "red", number: 4, city: "NewYork")
let item102 = MyClass(ID: 102, colour: "green", number: 7, city: "Chicago")

您可以使用ID作为键将其存储在字典中

let dictionary = [101: item101, 102: item102]

并使用

ID检索值
if let id101 = dictionary[101] {
  // use id101
} else {
  print("ID 101 not found")
}

或者您可以使用数组

let array = [item101, item102]

并使用ID函数

获取filter项目
let filtered = array.filter{ $0.ID == 102 }
if !filtered.isEmpty { 
   let id102 = filtered[0] 
} else {
   print("ID 102 not found")
}

答案 2 :(得分:0)

使用Array和foreach在该ID

中声明您的id
var ID: [Int]