Array
のDictionarys
でキーを検索していますが、結果の値を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
が期待どおりに動作しません。この値を変換する正しい方法は何ですか?
私はあなたのコードを知りませんが、これはあなたのために役立ちます。
このようにして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)
let hitCount = "100"
let data :Any = hitCount //Any type Value passing here
let score = Int(data as? String ?? "") ?? 0
print(score)
データがJSON文字列からデコードされる場合、NSNumberまたはNSStringとしてデコードされます。
この関数を使用できます。
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)
}
}
ここでは、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)
}
}