如何在Swift中将AnyObjecttypes转换为Int

我在Dictionarys Array中search一个键,我想将结果值转换为一个Int值。 这是我的尝试。

 if let result = lasrIDArray.flatMap( {$0["\(self.selectedTitle)"]} ).first { print(result) if let number = result as? NSNumber { let tag = number.integerValue let currentScroll = view.viewWithTag(Int(api.selectedCatID)!) as! UIScrollView let lastImgVw = currentScroll.viewWithTag(tag) as! UIImageView print(lastImgVw.frame.origin.y) } } 

但是, if let number = result as? NSNumber if let number = result as? NSNumber不能按预期工作。 什么是转换这个值的正确方法?

我不知道你的代码,但这会对你有帮助。

你可以用这种方法得到你的AnyObject

 let data :AnyObject = "100" let score = Int(data as! String)! //Force Unwrap optional value it will be dengerious for nil condition. print(score) 

或者也尝试这种方式

 let hitCount = "100" let data :AnyObject = hitCount as AnyObject //sometime Xcode will ask value type let score = Int(data as? String ?? "") ?? 0 print(score) 

输出 –

结果


Swift 3.1&Swift 4

 let hitCount = "100" let data :Any = hitCount //Any type Value passing here let score = Int(data as? String ?? "") ?? 0 print(score) 

输出 –

在这里输入图像说明

在这里我给出了将Anyobject转换为Int和String的例子

 var idInt : Int = 0 if let ids: AnyObject = responseDict["id"] { if let idsInt = ids as? Int{ idInt = idsInt print(idInt) } } var nameString : String = "" if let name: AnyObject = responseDict["name"] { if let nameStr = name as? String{ nameString = nameStr print(nameString) } } 

如果你的数据是从JSONstring解码的,它将被解码为NSNumber或NSString。

你可以使用这个function:

 func intValueForKey(key: String, inDictionary dictionary: [String: AnyObject]) throws -> Int { if let value = dictionary[key]?.integerValue { return value } else { throw NSError(domain: "Invalid key", code: -1, userInfo: nil) } }