我正在使用dictionary
类型的AnyObject
并读取特定键的值,并将其分配给这样的字符串对象,
contactObject.lastName = requestDict.objectForKey("lastName") as! String
我的问题是,当我的应用程序崩溃时,字典中没有关键字“lastName”,所以我添加了检查以避免崩溃,但我想知道如何从字典中获取可选值关键字“lastName”,因为我知道swift获取可选值的功能。
那么我如何摆脱添加检查,如果该密钥存在于字典中,则读取该值并将其分配给字符串对象。
任何帮助都会非常明显。
由于
答案 0 :(得分:1)
我不太确定你在问什么。如果您尝试从[String:AnyObject]的字典中获取lastName并将其转换为字符串,我建议您这样做。它只会在它存在的情况下进行分配。
if let lastName = requestDict["lastName"] as? String {
contactObject.lastName = lastName
}
强行展开总是危险的。如果let和guard let语句使用,以防止在解包可选项时传播错误。
答案 1 :(得分:0)
您应该使用SwiftyJSON库(外部框架),它非常干净,您不需要像ios内置系统那样的类型检查。
对于SwiftyJSON,您所要做的就是
contactObject.lastName = requestDict["lastName"].stringValue
它会将key的值转换为string本身。 如果字典lastname什么都不包含,SwiftyJSON将使用“”,这是非常好的。
要创建数组,您可以使用以下内容:
array = dictionary["contactObjects"].arrayValue
要了解详情,请使用Google Swifty JSON并打开github页面。
如果你可以使用CocoaPods,你要做的就是创建一个podfile并添加pod。