我想创建一个包含两个数组的字典(一个键称为“locations”,另一个键是“items”),如下所示:
var tmpResults = Dictionary("locations",Array)
tmpResults["items"]=Array
或类似的东西(两者似乎都不起作用):
var tmpResults = ["locations",:<Location>,"items":<Item>]
var tmpResults = ["locations":Array(Location),"items":Array(Item)]
但我真的不确定如何在Swift中这样做。我如何指定数组可以容纳的类型?
答案 0 :(得分:1)
我认为最简单的解决方案是AnyObject
。
var tmpResults: [String: AnyObject] = [:]
tmpResults["locations"] = [location1, location2, location3]
tmpResults["items"] = [item1, item2, item3]
// Assuming location1, location2, and location3 are all of the same "Location" type
// And item1, item2, and item3 are all of the same "Item" type
使用AnyObject
,你的词典对象几乎可以是任何东西。在此示例中,您有一个字典,其中包含Locations
和一个键的数组,以及另一个键上的Items
数组。
你确实失去了Swift所做的一些不错的类型检查。
修改强>
实际上,您可以像这样声明它,以便编译器至少知道您的字典包含数组:
var tmpResults: [String: [AnyObject]] = [:]
在任何一种情况下,你都可以使用你可能会这样做的数组:
if let items = tmpResults["items"] as? [Item] {
// Do something with you items here
}
答案 1 :(得分:0)
为了在数组中保存数组,您可以使用以下代码:
var tempResults : Dictionary<String, Array<String>>
这可以简化为:
var tempResults : [String: [String]]
然后你可以添加你的数组项目:
var array1 : [String] = [String]()
array1.append("location1")
array1.append("location2")
array1.append("location3")
var array2 : [String] = [String]()
array2.append("item1")
array2.append("item2")
array2.append("item3")
最后,您可以将其添加到词典
tempResults["location"] = array1
tempResults["items"] = array2
希望这有帮助!