簡體   English   中英

如何在Swift中將Any轉換為Int?

[英]How to convert Any to Int in swift?

在提出這個問題之前,我已經搜索了Stackoverflow的相關問題,並找到了類似的問題: 如何在Swift中將Any轉換為Int

我的要求不是那么少:

let tResult = result as? [String:AnyObject]
let stateCode = tResult?["result"] as? Int

我的需要是如果tResult?["result"]是一個String類,我希望它也可以轉換為Int ,而不是nil

objective-c ,我編寫了一個class method來獲取轉換后的Int

+ (NSInteger)getIntegerFromIdValue:(id)value
{
    NSString *strValue;
    NSInteger ret = 0;
    if(value != nil){
        strValue = [NSString stringWithFormat:@"%@", value];
        if(![strValue isEqualToString:@""] && ![strValue isEqualToString:@"null"]){
            ret = [strValue intValue];
        }
    }
    return ret;
}

是否可以使用Swift3編寫類似的class method

不那么冗長的答案:

let key = "result"
let stateCode = tResult?[key] as? Int ?? Int(tResult?[key] as? String ?? "")

結果:

let tResult: [String: Any]? = ["result": 123] // stateCode: 123
let tResult: [String: Any]? = ["result": "123"] // stateCode: 123
let tResult: [String: Any]? = ["result": "abc"] // stateCode: nil
if 
    let tResult = result as? [String:AnyObject],
    let stateCodeString = tResult["result"] as? String,
    let stateCode = Int(stateCodeString)
{
    // do something with your stateCode
}

而且你不需要任何自己的class methods

if let stateCode = tResult["result"] as? String {
    if let stateCodeInt = Int(stateCode){
        // stateCodeInt is Int
    }
}else if let stateCodeInt = tResult["result"] as? Int {
    // stateCodeInt is Int
}

這樣的事情應該有效

試試這個

class func getIntegerFromIdValue(_ value: Any) -> Int {
    var strValue: String
    var ret = 0
    if value != nil {
        strValue = "\(value)"
        if !(strValue == "") && !(strValue == "null") {
            ret = Int((strValue as NSString ?? "0").intValue)
        }
    }
    return ret
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM