Swift中基本类型的转换
最近上手学习了Swift的语言,谙习JS的我感觉非常顺眼,在此记录下我的学习过程吧.
因为我对Objective-c接触的不多,所以在oc里头使用的东西目前我可能还有很多不知道他的存在.
最近在用swift写了一些小示例app,很多地方都用到了基本类型的转换,但是我发现他居然没有Integer.parse()这样的东西,所以还是摸索了一番.
ps: 我使用的版本是xCode6 bate4(其他版本可能实现又差别)
OK,talk is chaep, show you the code!
扩展Double,用于保留几位小数的操作,比如Double.format(“.2″)保留两位,其他的也和这个类似
extension Double { //转换 func format(f: String) -> String { return NSString(format: "%\(f)f", self) } }
Int -> Double、Float、String
var i:Int = 1 Double(i)// 1.0 Float(i)// 1.0 i.bridgeToObjectiveC().stringValue// "1"
String -> Int、Doubel、Float
var s:String = "1.9d2d" s.toInt()//nil s.bridgeToObjectiveC().integerValue// 1 s.bridgeToObjectiveC().doubleValue// 1.9 s.bridgeToObjectiveC().floatValue// 1.89999999...
这里的转换规则有些类似JS中的转换,比如:
- 当字符串第一位不为数字,转为Double(Int)时就会是0,
- 当字符串第一位为数字,直接转换为数字,直到遇到非数字字符停止,数值为非数字字符之前的数字
Double、Float、Int -> String
var d:Double = 1.09 d.bridgeToObjectiveC().stringValue// "1.09" d.format(".1")//根据extension Double 扩展的方法(四舍五入) -> "1.1" var f:Float = 1.09 f.bridgeToObjectiveC().stringValue// "1.09"
基本规则:
- 不能直接用String(Int)进行转换
- Int可以直接使用Double(Int)、Float(Int)
- 大部分的基本类型转换都是用bridgeToObjectiveC()函数处理