是否可以拥有一个字典,其中包含一个键的多个值? 例如,我有多个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的值。
答案 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
中声明您的idvar ID: [Int]