在提出这个问题之前,我搜索了Stackoverflow的相关问题,并发现了类似的一个:
How to convert Any to Int in Swift.
我的要求不是那么少:
let tResult = result as? [String:AnyObject] let stateCode = tResult?["result"] as? Int
我的需要是,如果tResult?[“result”]是一个String类,我希望它也转换为Int,而不是nil.
在Objective-C中,我写了一个类方法来获取转换后的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编写类似的类方法?
解决方法
不详详细答案:
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