我想将字典存储为:
[String : AnyItem]
因为格式为
["codename" : "title", "image" : UIImage("imageName")]
但是我有一个困难的类型来完成这个。最终目标是拥有一个充满这些类型字典的数组。
答案 0 :(得分:1)
如果您想要一个可以容纳任何内容的字典值,则需要Any
(而不是AnyType
。
但这将是一个真正的痛苦 - 每当你想要获得价值时,你将不得不每次都隐藏类型,如果你搞砸了,你会得到各种各样的错误。
相反,请考虑使用元组 - 您想要的两种类型的对。您可以命名元素以使其更易于访问:
var images: [(codename: String, image: UIImage)] = []
if let url = NSURL(string: "http://www.gravatar.com/avatar/24d29e1ff91b68642bbef96b43b5e119?s=128&d=identicon&r=PG&f=1"),
let data = NSData(contentsOfURL: url),
let image = UIImage(data: data) {
images.append(codename: "AlexAvatar", image: image)
}
images[0].codename // name of the first image in the array
images[0].image // the first image in the array
或者,如果您想要按名称处理图像,为什么不使用“代号”字段作为字典键?
var images: [String:UIImage)] = []
if let url = NSURL(string: "http://www.gravatar.com/avatar/24d29e1ff91b68642bbef96b43b5e119?s=128&d=identicon&r=PG&f=1"),
let data = NSData(contentsOfURL: url),
let image = UIImage(data: data) {
images["AlexAvatar"] = image
}
for (codename, image) in images {
// iterate over the codename/image pairs
}
如果您的实际数据要求更复杂,请考虑使用结构而不是元组。