我想安全地搜索一個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很漂亮!這正是我所期待的。非常感謝先生。 –