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()函数处理

Swift中基本类型的转换

时间: 2024-08-27 10:15:42

Swift中基本类型的转换的相关文章

JavaScript中对象类型的转换小结

对象到字符串和对象到数字类型的转换涉及到两个重要的方法,最终的转换结果会受到这两个方法返回结果的影响,这两个方法就是toString和valueOf.所有的对象都会从Object对象中继承到这两个方法.toString方法 用于返回对象的字符串表示(但是其实也可以不返回字符串).对于默认从Object继承而来的toString方法并不会返回太多有意义的内容.而valueOf方法目的是返回一个可以表示对象的原始类型值,但是由于对象的复杂性,大多数情况下根本不可能用一个原始类型值来表示,所以默认的v

OC中的类型强制转换

在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用.例如有一个字符串对象@"111.22",需要转为NSNumber对象,最简单的方法就是这样:[NSNumber numberWithFloat:[@"111.22" floatValue]]. 这个方法先使用NSString的floatValue方法将字符串转成float,再使用NSNumber的numberWithFloat方法将结果转成NSNumber.但它有一个前提条

Swift中的类型属性(静态变量)

http://blog.haohtml.com/archives/15098 Swift中的类型属性(静态变量) Posted on 2014/06/13 类型属性语法 在 C 或 Objective-C 中,静态常量和静态变量的定义是通过特定类型加上global关键字.在 Swift 编程语言中,类型属性是作为类型定义的一部分写在类型最外层的花括号内,因此它的作用范围也就在类型支持的范围内. 使用关键字static来定义值类型的类型属性,关键字class来为类(class)定义类型属性.下面的

js中基本类型的转换,进制的转换

一.基本类型的转换 1.数字转字符串 //直接给数字加空的字符串. var num=20; var str=20+" "; console.log(typeof str);//string //使用String()函数,让数字更加显示的转为字符串 var num=20; var str=String(num); console.log(typeof str);//string //使用toString()方法.toString()有一个参数,用来指定转换的基数.(十进制/二进制/八进制

Swift中可选类型(Optional)的用法 以及? 和 ! 的区别 (转载博客,知识分享)

本文转载自:代码手工艺人的博客,原文名称:Swift之 ? 和 ! Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使用变量之前不进行初始化就会报错: C代码   var stringValue : String //error: variable 'stringValue' used before being initialized //let hashValue = stringVa

struts2中Double类型的转换

今天做项目,ssh + Extjs,页面js中定义了几个NumberField,对应的value都是double类型的,其中有个NumberField的name为 name,结果执行的时候报错了,说找不到setName(String name)方法,可我分明写了get和set方法:setName(double name),奇怪,为什么是setName(String name)?原来问题出在struts上,struts自带的类型转换机制将double类型的数值用string转换了,当然出问题了.

(转)java 中unsigned类型的转换

转自:http://blog.sina.com.cn/s/blog_77bf45a90101dld9.html 在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换. 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream中的数据以Unsigned读取. Java在这方面提供了支持,可以用java.io.DataInputStream 类对象来完成对流内数据的Unsigned读取,该类提供了如下方法: 

matlab中syms类型的转换

类型是sym的数字转化为char型 x = sym('2*sqrt(5) + pi') % sym型的数字s = num2str(double(x)) % 将sym型的数字转化为char型 matlab中的sym数据类型转换为double型 >> root=solve('x^2+5*x-10') root = -5/2+1/2*65^(1/2) -5/2-1/2*65^(1/2) >> class(root) ans = sym >> root=double(root)

swift中的"类型擦除"

在 Swift 的世界中,如果我们将协议称之为国王,那么泛型则可以视作皇后,所谓一山不容二虎,当我们把这两者结合起来使用的时候,似乎会遇到极大的困难.那么是否有一种方法,能够将这两个概念结合在一起,以便让它们成为我们前进道路上的垫脚石,而不是碍手碍脚的呢?答案是有的,这里我们将会使用到类型擦除 (Type Erasure) 这个强大的特性. Protocol 'SpellDelegate' can only be used as a generic constraint because it h