web-dev-qa-db-ja.com

SwiftでAnyObjectタイプをIntに変換する方法

ArrayDictionarysでキーを検索していますが、結果の値を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が期待どおりに動作しません。この値を変換する正しい方法は何ですか?

9
Irrd

私はあなたのコードを知りませんが、これはあなたのために役立ちます。

このようにして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)

出力-

result


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)

出力-

enter image description here

15
Anand Nimje

データが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)
    }
}
1
Hao

ここでは、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)
        }
    }
0
Bhoomi Jagani