1.Swift 介绍
Swift 语言由苹果公司2014年6月推出。2010年7月由苹果开发者工具部门总监 克里斯.拉特纳 开始着手Swift 语言的设计工作。
2.Swift特色
* 苹果宣称Swift 特点:快速,安全,现代,互动。优势明显高于OC语言。
* 可以使用现有的Cocoa 和Cocoa Touch 框架
* Swift 取消了OC 的指针及不安全访问的使用
* 舍弃OC 早期应用Smalltalk 的语法,全面使用句点表示法
* 提供类似Java 的名字空间,泛型,运算对象重载
* Swift 被简单地形容为“没有C 的OC ”
3.开发体验
3.1 常量和变量
*1) let 代表定义一个常量,设置之后不可以修改
letnumber =1
*2)var 代表定义一个变量,设置之后可以修改
varnum =2
num=3
*3)Swift 中定义一个常量和变量不需要写数据类型,编译器会根据数据的真实类型自动推导
*4) Swift开发中每一条语句句尾不用使用分号。但是写上也不会报错,如果同一行由多条语句必须写上分号
*5)在Swift 中使用print()代替OC 中的NSLog
print(num)
**Swift 开发技巧:在做Swift 开发中,我们经常用到option +click 键来查看方法或变量
** 常量&变量的使用原则:尽量先用 let,只有需要变的时候,再用 var,能够更加安全
3.2 数据类型转换
*1)Swift 中不存在隐式类型转换,所有的类型转换必须是显示出来的
letnum1 =10
let num2 = 10.1
let iNum = num1 + Int(num2)
letdNum =Double(num1)+num2
*2)Swift 是强语言/OC 是弱语言
letnum3 :Int=11;
letnum4 :Int = Int(10.1)
3.3 逻辑分支
3.3.1 if语句
Swift 中的if 的使用方式“基本上”和OC一致
*1)Swift 中的if可以省略()
if(number==1){
print("ok")
}
ifnumber== 1{
print("ok")
}
*2)Swift 中哪怕if 只有一条语句,也不能省略{}
*3)在C和OC中有一个非假即真的状态。在Swift 中,条件只能放bool 值,取值只有两个true /false
3.3.2 switch语句
*1) 后面的()可以省略
switch(num){
case 1:
print("1")
break
case 2:
print("2")
break
case 3:
print("3")
break
default:
print("other")
break
}
switchnum{
case1:
print("1")
break
case 2:
print("2")
break
case 3:
print("3")
break
default:
print("other")
break
}
*2)OC 中的switch如果没有break 会穿透,Switch 不会穿透
case1:
print("1")
case2:
print("2")
case3:
print("3")
default:
print("other")
}
*3)OC中如果在case 中间定义变量,必须加上{}确定作用域。但是Swift 中不用
switchnum{
case1:
print("1")
let value = 998
case2:
print("2")
case3:
print("3")
default:
print("other")
}
*4)OC 中default 的位置可以随便写,只有所有case 都不满足才会执行default 。而swift 中的default 只能放在最后
*5)OC中default 可以省略,swift 中“大部分”情况不可以省略
3.3.3循环for
Swift 特色循环:
0..<10代表一个区间范围,从0 开始到9,包含头不包含尾
fori in0..<10
{
print("i")
}
_代表忽略,如果不关心某个参数,就可以使用。在Swift开发中,_使用效率极高
for _in0..<10
{
print("i")
}
0...10代表一个区间范围,从0 开始到10,包含头包含尾
fori in0...10
{
print("i")
}
** 注意...直接不能写空格
3.3.4循环while
Swift 中的while 循环和OC中差不多,而且开发中很少使用while
vara =0
whilea<10
{
print(a)
a++
}
3.3.5循环 repeat while
Swift 升级到2.0版本之后,do while 发生很大变化,do while 没有do了,因为do被用作捕获异常了
varb =0
repeat{
print(b)
b++
}whileb<10
3.3.6 三目运算符
在做Swift 开发中三目运算符用的非常非常多
letres = (num==1) ?1:10
3.3.7 可选类型
可选类型:代表可以有也可以没有Optional ?
convenience init?
以后但凡看到一个方法或者数据类型后面有? ,就代表一个可选类型
初学者看到?需要淡定一点,因为从OC 转入Swift 之后,最让人头疼
leturl =NSURL(string:"http://www.53.com/")
print(url)
print(url!)
使用可选类型是需要注意,如果打印了可选类型,那么打印出来的值会被Optional 包裹。! 告诉编译器,可选类型中一定要有值,强制解析。
如果可选类型中没有值,而有进行了强制解析,那么程序就会崩溃
Swift的用意 就是让我们将大部分运行时的错误,都显示在编译器是解决。
初学者对于?!最好借助编译器解决
ifurl!=nil
{
let request =NSURLRequest(URL:url!)
}
*可选绑定
会将url 的值取出来赋值给urlFinal 变量,如果值不为空,那么就进入{}
ifleturlFinal =url{
let request =NSURLRequest(URL: urlFinal)
}