如何获取Number值表单字典

时间:2015-12-29 06:15:34

标签: ios xcode swift

我正在从JSON访问数据并将其存储在字典1中并将该字典1传递给另一个视图控制器的字典2.视图控制器的所有细节主要是12个标签。我已设法访问字符串,但我无法获取数字值。请看一下代码。

DetailsViewController

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

类型

4 个答案:

答案 0 :(得分:1)

应尽可能避免强制演员,因为它可能导致意外崩溃。如果由于某种原因字典最终没有(self.dict2["lng"] as! NSNumber)密钥,lng会使您的应用程序崩溃。

你的最后一行应该是:

self.lblLongitude.text = self.dict2["lng"]?.description

这保证不会崩溃,因为description存在于任何对象上,并且如果字典以某种方式不包含" lng"键,您将获得一个简单的nil分配给text

答案 1 :(得分:0)

如果self.dict2 [“lng”]永远不为空

,请尝试这样做
 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"]!)