我正在从JSON访问数据并将其存储在字典1中并将该字典1传递给另一个视图控制器的字典2.视图控制器的所有细节主要是12个标签。我已设法访问字符串,但我无法获取数字值。请看一下代码。
var dict2 = [String : AnyObject]()
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.lblTopName.text = self.dict2["toponymName"] as? String
self.lblFcodeName.text = self.dict2["fcodeName"] as? String
self.lblName.text = self.dict2["name"] as? String
self.lblCountryCode.text = self.dict2["countrycode"] as? String
self.lblFCL.text = self.dict2["fcl"] as? String
self.lblFclName.text = self.dict2["fclName"] as? String
self.lblWikipedia.text = self.dict2["wikipedia"] as? String
self.lblFcode.text = self.dict2["fcode"] as? String
self.lblLongitude.text = self.dict2["lng"] as? String
请注意。经度为数字值的最后一行代码。如果我将String
替换为NSNumber
,则会出现以下错误:
无法将类型NSNumber的值指定为String
类型
答案 0 :(得分:1)
应尽可能避免强制演员,因为它可能导致意外崩溃。如果由于某种原因字典最终没有(self.dict2["lng"] as! NSNumber)
密钥,lng
会使您的应用程序崩溃。
你的最后一行应该是:
self.lblLongitude.text = self.dict2["lng"]?.description
这保证不会崩溃,因为description
存在于任何对象上,并且如果字典以某种方式不包含" lng"键,您将获得一个简单的nil分配给text
。
答案 1 :(得分:0)
self.lblLongitude.text = (self.dict2["lng"] as! NSNumber).stringValue
否则如果可以为null
self.lblLongitude.text = self.dict2["lng"]?.description
答案 2 :(得分:-1)
你可以从字典中获取整数值,如
int value = dict["integerValue"].integerValue // or doubleValue etc
如果你需要字符串,它可以像
self.lblLongitude.text = "\(self.dict2["lng"]. doubleValue)"
答案 3 :(得分:-1)
你可以这样写
self.lblLongitude.text = String(format: "%f",self.dict2["lng"]!)