一、Swift简介
2010年的夏天,苹果公司的开发人员Chris Lattne接到了一个特别的任务,为OS X 和iOS平台开发下一代的编程语言,也就是Swift。
苹果公司于2014年WWDC(苹果开发者大会)发布的新开发语言Swift,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。
2015年的WWDC开发者大会上,苹果公司推出了Swift2.0版本,并且Swfit完全开源。
自从Swift发布以来,在http://www.tiobe.com中的排行一直处于上升的状态。
二、声明变量和常量
在Swift中使用“let”修饰一个常量,使用“var”修饰一个变量;
let修饰常量的值是不可以更改的;
var修饰的变量的值是可以更改的;
在声明常量和变量的时候可以使用表情符号、中文等命名常量名和变量名。
Swift里不会自动给常量变量赋初始值,也就是说常量变量不会有默认值,所以定义常量的时候一定要给定初始值
Swift定义变量或者常量的时候,需要标识出变量或者常量的类型,如果不标识,会根据初始值自动推断。
因为swift是强类型语言,所以不同类型的变量不能相加,如果想要相加,可以强制类型转换
1、声明常量变量
// MARK: - 定义常量变量:变量类型的隐式转换 // 在Swift中如果不给定变量常量的类型,该常量变量的类型就是其初始值的类型
var name = "Jack" // 隐式转换为String类型 var name1 : String = "Rose" // 给定name1的类型为String,不能赋值其他类型 var age : Int = // 整型变量 var age1 : Int? // ?表示age1的类型为可选类型,其值可以为空
print(age1) var gender : Character = "f" // 字符变量,字符用""括起来,""中只能写一个字符 var flag : Bool = true // Bool类型,其值只有true 和 false
2、定义字符串,以及常用到的函数
1. String是有序的字符集合,例如“Hello World”
2. Swift中的字符串通过String类型表示,当然也可以看成Character字符类型的集合
// MARK: - 字符串
// 1、创建一个空的字符串
var str_empty = ""
var str2_empty = String() // 2、判断字符串是否为空
if str_empty.isEmpty {
print("空")
} else {
print("非空")
} // 3、字符串的拼接
var url : String = "http://"
var str : String = "www.baidu.com"
// 方式1:
//url.appendContentsOf(str)
// 方式2:
var newUrl = url + str
// 方式3:字符串插值 -- \(变量名)
var newURL = "百度网址:\(newUrl)" print(newURL) // 4、获取字符串长度
var str1 : String = "abcdef"
print(str1.characters.count) // 5、字符串的比较
var str2 : String = "MBBoy"
var str3 : String = "GBLW"
if str2 == str3 {
print("\(str2)和\(str3)相等")
} else if str2 > str3 {
print("\(str2)大于\(str3)")
} else {
print("\(str3)大于\(str2)")
}
3、Float 和 Double
// MARK: - float与double
var num1 = 3.14 // 不指定类型,默认是double类型
// 如果想定义float类型的变量,必须要指定类型
var num2 : Float = 2.14
// 因为swift是强类型语言,所以不同类型的变量不能相加,如果想要相加,可以强制类型转换
//var sum = num1 + num2 // 报错
var sum = num1 + Double(num2) // 不会报错
print("和是\(sum)")
4、小结
- 常量或者变量的类型必须和你赋给它们的值的类型一样;
- 声明时类型是可选的,声明的同时赋值的话,编译器会自动推断类型;
- 如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割;
- 使用let来声明常量,使用var来声明变量;
- 常量只能赋值一次,使用的时候可以直接获取到这个值;
- 数据只能进行显示类型转换;
三、声明一个数组、字典
在Swift中使用“let”或者“var”声明一个数组或者字典;
数组必须指定数据类型,如果没有指定类型则会根据数组的初值去推断数据类型;
字典所有的key值必须是同一数据类型;
字典所有的value必须是同一数据类型。
1、数组
// MARK: - 数组
// Swift中数组的元素类型必须相同,如果想存放不同类型的元素,用OC // 定义一个数组
var nameArray = ["yuanyuan", "GBLW", "WYW"]
print(nameArray) // 指定数组元素类型
var ageArray : Array<Int> = [, , ]
print(ageArray) // 定义一个空数组
// 方式1:
var carArray = Array<String>()
// 方式2:
var carArray1 = [Int]()
print(carArray) // 访问数组元素
print(nameArray[]) // 给数组添加元素
carArray.append("bb")
print(carArray) // 使用运算符添加数组元素,可以添加多个
carArray += ["cc", "dd"]
print(carArray) // 插入元素到具体位置
carArray.insert("aa", atIndex: )
print(carArray) // 移除某个元素
carArray.removeAtIndex()
print(carArray) // 移除所有元素
carArray.removeAll()
print(carArray) // 数组排序
print(nameArray)
nameArray.sortInPlace()
print(nameArray)
2、字典
// MARK: - 字典
// 定义一个字典类型的变量
var dic : Dictionary<String,Int> = ["a" : , "b" : , "c" : ]
print(dic) // 定义空字典
// 方式1
var dic_empty = Dictionary<String, Int>()
// 方式2
var dic_empty2 : Dictionary<String, Int> = [:] // 向字典中添加键值对
dic["d"] =
print(dic) // 修改字典中的值
dic["d"] =
print(dic["d"]) // 删除一个键值对
dic.removeValueForKey("a")
print(dic)
四、元组
元组是Swift里面独有的一种数据格式。
是一个可以返回多个值的数据格式。
在Swift里面声明的时候使用“()”声明。
元组可以通过下标去访问元素,也可以通过key值去访问元素;
整体的数据结构有点类似于C语言里面的结构体。
// MARK: - 元组 // 定义一个元组
// 方法1:直接初始化一个元组,使用Swift隐式转换
var tuples = ("水果",["香蕉", "苹果", "西瓜"])
// 方法2:初始化元组的时候给元组指定类型
var tuples1 : (String, Array) = ("动物", ["