如何在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) } }