我想安全地搜索一个swift字典中的值,使用if let,并确保它是类型安全的,因为我越来越深入到字典中。该字典包含包含更多字典的NSArray的字典。在swift中搜索字典时如何使用可选链接?
在第一次尝试我的代码看起来是这样的:
if let kkbox = ticket["KKBOX"] as? Dictionary<String, AnyObject> {
if let kkboxDlUrlDict = kkbox["kkbox_dl_url_list"] as? Dictionary<String, AnyObject> {
if let kkboxDlUrlArray = kkboxDlUrlDict["kkbox_dl_url"] as? NSArray {
for dict in kkboxDlUrlArray {
if let name = dict["name"] as? String {
if name == mediaType.rawValue {
urlStr = dict["url"] as String
}
}
}
} else { return nil }
} else { return nil }
} else { return nil }
如何缩短我它也许一个或2线?
我意识到如果它是2层,我可以链接它。这个工程:
if let kkboxDlUrlArray = ticket["KKBOX"]?["kkbox_dl_url_list"] as? NSArray {
}
但是任何更长的链,不会编译。
有没有办法通过字典多次链接?
谢谢
SwiftyJSON可能有助于简化。请参阅https://github.com/SwiftyJSON/SwiftyJSON。 –
您的'else'子句返回'nil',但您的主子句分配给'urlStr'?这不会编译。换句话说,如果我们知道预期的回报,我们可能会利用'map()'和相关函数。 – GoZoner
@MaxMacLeod SwiftJSON很漂亮!这正是我所期待的。非常感谢先生。 –