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中的转换,比如:

  1. 当字符串第一位不为数字,转为Double(Int)时就会是0,
  2. 当字符串第一位为数字,直接转换为数字,直到遇到非数字字符停止,数值为非数字字符之前的数字
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"
基本规则:
  1. 不能直接用String(Int)进行转换
  2. Int可以直接使用Double(Int)、Float(Int)
  3. 大部分的基本类型转换都是用bridgeToObjectiveC()函数处理

 

posted @ 2014-07-31 11:31  PressII...  阅读(713)  评论(0编辑  收藏  举报