一、循环 for 、 while 、do while(swift中没有do while 是 repeat while)
/*
普通的for循环和oc中的一致
*/
for var i=0;i<10;i++
{
print(i)
}
/*swift特色循环
0..<10 代表一个区间范围 从0开始到9,包含头但是不包含尾
在swift 1.0时 0..10
*/
for i in 0..<10
{
print(i)
}
/*
_ 代表忽略,如果不关心某个参数,就可以使用_
在swift开发中,使用_的频率非常高
*/
for _ in 0..<10
{
print("base")
}
//0...10 代表一个区间范围 从0开始到10 包含头又包含尾
for _ in 0...10
{
print("base")
}
/*
swift升级到2.0之后,do while发生了很大的变化
do while 没有do了,do被用作捕获异常
*/
var b = 0
repeat{
print(b)
b++
}while b<10
二、可选类型
var num = 10
if num == 5
{
print("5")
} else
{
print("10")
}
/*
在oc中 if else 可以使用三目运算符来简写
注意:在swift中开发中三目运算符用的非常多
*/
let res = (num == 5) ? 5 : 10
print(res)
/*
可选类型:代表着可以有也可以没有 Optional ?
convenience init?
以后看到一个方法或者数据类型后面有 ?,就代表返回一个可选的数据类型
使用可选类型需要注意,如果直接打印了可选类型,那么直接打印出来的可选类型会被option包裹
!告诉编译器,可选类型中一定有值,强制解析
如果可选类型中没有值,却又进行了强制解析,就会crash
*/
let url = NSURL(string: "http://www.baidu.com")
print(url)
print(url!)
let url2 = NSURL(string: "http://www.百度.com")
print(url2)
//swift的用意就是让我们将大部分运行时的错误,都在编译时解决
if url != nil
{
let request = NSURLRequest(URL: url!)
}
//可选绑定
//会将url中的值取出来赋值给urlFinal变量,如果值不为nil,那么就进入{}
if let urlFinal = url
{
let request = NSURLRequest(URL: urlFinal)
}
三、数组
//和oc数组的区别就是去掉前面的@符号
let arr = ["base","xiuxiu"]
//swift中的数组可以存储任意类型
let arr2 = ["base",123,10.1]
//取值
arr2[0]
//遍历
for item in arr
{
print(item)
}
//追加
var arr3 = ["base","xiuxiu"]
arr3.append("zy")
//删除
//swift中删除一个元素,会将被删除的元素返回
arr3.removeAtIndex(0)
arr3
//还有一个删除所有,需要注意一个容量的问题,如果传入true之后需要保持数组现有的容量,如果传入false则代表不保持当前的容量,所以一般情况下,如果删除了这个数组中的所有元素,但是后面还需要用到这个数据,建议传true,这样后面用到的时候就不用重新分配存储空间了
arr3.removeAll(keepCapacity: false)
//补充:容量是如何增加的? 是以当前容量的基数*2
arr3.append("base")
arr3.capacity
arr3.append("xiuxiu")
arr3.capacity
arr3.append("wlx")
arr3.capacity
arr3.append("zj")
arr3.capacity
arr3.append("tn")
arr3.capacity
//初始化
//在swift中如果一个变量没有初始化是不能被使用的
var arr4 = [String]()
arr4.append("zj")
//数组合并
var arr5 = ["base","123"]
let arr6 = ["xiuxiu"]
arr5 += arr6
//注意点:只有相同类型的数组才可以进行合并
//swift是强语言,不同的数据类型不能进行运算