2016-11-10 16 views
12

この質問をする前に、私はStackoverflowの関連する質問を検索し、同様のものを見つけました:How to convert Any to Int in SwiftAnyを迅速にIntに変換する方法?

私の要件があまりされていないこと:tResult?["result"]Stringクラスである場合

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

私の必要性がある、私はそれがむしろnilに比べて、あまりにもIntに変換したいです。 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を書くことは可能ですか?

答えて

4

それほど冗長答え:

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 
+1

コンパイラがその行を高速にコンパイルするかわからない場合 –

+0

@ LucaD'Alberti確かに、私はパフォーマンスをテストしませんでした。私はコンパイラがラインを十分に速くコンパイルするほどスマートであることを願っています:) –

2
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 
} 

このような何かが

2

この

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 
} 
3
if 
    let tResult = result as? [String:AnyObject], 
    let stateCodeString = tResult["result"] as? String, 
    let stateCode = Int(stateCodeString) 
{ 
    // do something with your stateCode 
} 

を試してみて、あなたはどんな自分class methodsを必要としません動作するはずです。

+0

がどれとしてのplistからのNSNumberを読み込み、文字列とINTに次へと変換します。ありがとうございました。 – OrdoDei

関連する問題