Swift是否支持多维字典?

7

我正在学习Swift,之前是从PHP转过来的。我想知道在Swift中是否可以使用深层嵌套数组。以下是一个PHP示例:

$myArray = array(

"motorcycles" => array ("Honda", "Ducati", "Yamaha"),
"cars" => array(
                "sedans" => array("Jetta", "Taurus", "Impala"),
                "sport" => array("Porsche", "Ferarri", "Corvette"),
                "trucks" => array (
                                "shortbed" => array("Ford F150", "Dodge Ram 1500"),
                                "longbed" => array(
                                                    "standardCab" => array("Ford F350", "Dodge Ram 2500"),
                                                    "crewCab" => array("Ford F350", "Dodge Ram 2500")
                                                    )
                            )
            )

);
1个回答

8

是的,在Swift中,这将是:

let myArray = [
    "motorcycles": ["Honda", "Ducati", "Yamaha"],
    "cars": [
        "sedans": ["Jetta", "Taurus", "Impala"],
        "sport" : ["Porsche", "Ferarri", "Corvette"],
        "trucks" : [
            "shortbed" : ["Ford F150", "Dodge Ram 1500"],
            "longbed" : [
                "standardCab":["Ford F350", "Dodge Ram 2500"],
                "crewCab":["Ford F350", "Dodge Ram 2500"]
            ]
        ]
    ]
]

从这样的结构中读取值可能有些困难,因为Swift很难区分类型。要获取standardCab车辆,可以执行以下操作:

if let trucks = myArray["cars"]?["trucks"] as? [String:AnyObject] {
    if let standardCab = trucks["longbed"]?["standardCab"] as? [String] {
        println(standardCab)
    }
}

谢谢,但是我使用你的例子时出现了一个错误:“Playground execution failed”。不过根据我在网上找到的例子,它应该可以工作。 - Rick Ellis
它对我来说在 Xcode 6.1 上起作用。你正在运行哪个版本的 Xcode?尝试添加一个类型到 myArray 来帮助编译器:let myArray:[String:AnyObject] = [ - vacawama
啊,原来如此。显然我的6.1版本有一个漏洞。我下载了最新的构建版本,现在它可以运行了。谢谢! - Rick Ellis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接