Swift语法基础

作为iOS开发者,只会OC肯定是不够的,Swift作为苹果强推的一门语言,一定要掌握。这篇博客整理了一些Swift语法基础中的要点(本文书写时的Swift版本为3.1)


一、标识符的定义:

定义变量的格式:
var num : Int = 10
定义常量的格式:
let num : Int = 10
(通常把标识符定义为常量,如果确定需要修改时再修改为变量,保证数据安全)


二、类型推导

当一个标识符在定义时有直接赋值,那么可以省略类型。编译器会自动推导其类型


三、类型转换

  1. 隐式转换
    Swift中没有隐式转换
  2. 强制转换
  • 在OC中,通过在变量之前用小括号括起类型的方式进行强制转换
  • 在Swift中,通过在标识符之前写上类型,用小括号括住标识符的方式转换:
let a = 10.0
let b : Int = Int(a)


四、逻辑分支

  1. if语句
  • 条件语句的括号可以省略
  • 没有非零即真的规则,必须是Bool类型
  1. 三目运算
  • 语句格式与OC中完全一致
  1. guard
  • 守卫。根据判断条件筛选,提高代码可读性
  1. switch
  • 不用写break,如果希望穿透,则加上fallthrough
  • 可以判断多个条件,在case后用逗号分隔
  • 可以判断浮点型和字符串
  • 可以判断区间:左闭右开区间min..,表示[min,max);左闭右闭区间min...max,表示[min,max]


五、循环

  1. for循环
  2. while循环
  3. repeat while循环


六、字符串

Swift中的字符串是一个结构体,而不再是一个对象。效率更高

  1. 遍历字符串:
for char in str.characters {
    print(char)
}
  1. 拼接字符串

(1)字符串与字符串拼接。
直接使用+运算即可

(2)快速拼接。
在字符串中通过(param)的方式拼接参数:

let age = 18
let name = "xyz"
let height = 1.88
let info = "my name is \(name), my age is \(age), my height is \(height)"

打印结果my name is xyz, my age is 18, my height is 1.88
(3)格式化拼接。
以拼接时间为例

let min = 2
let sec = 7
let timeString = String(format : "%02d:%02d", arguments:[min, sec])

打印结果02:07

3.截取字符串
一般是先把String类型转换为NSString类型,再调用NSString的方法进行截取

let urlString = "www.baidu.com"
let header = (urlString as NSString).substring(to: 3)
//结果为"www"
let middle = (urlString as NSString).substring(with: NSMakeRange(4, 5))
//结果为"baidu"
let subfix = (urlString as NSString).substring(from: 10)
//结果为"com"

4.判断字符串是否为空

  • 与空字符串进行比较
if str == "" {
    //do something
}
  • 判断count是否为0
if str.characters.count == 0 {
    //do something
}
  • 判断isEmpty属性是否为true
if str.isEmpty {
    //do something
}


七、数组

  1. 定义数组
  • 定义不可变数组:使用let修饰符定义
let array = ["Baidu","Alibaba","Tencent"]
  • 定义可变数组:使用var修饰符定义
var mutableArray = [String]()  
  1. 操作可变数组
mutableArray.append("163")
mutableArray.append("HuaWei")
mutableArray[0]
mutableArray[0] = "HuaWei"
mutableArray.remove(at: 0)
  1. 遍历数组
  • 根据下标遍历
for i in 0..
  • 快速遍历数组中的元素
for name in array {
    print(name)
}
  • 遍历数组的指定区间
for name in array[a..
  1. 合并数组
    相同类型的数组可以通过加法运算符直接合并
let resultArray = array1 + array2


八、字典

  1. 定义字典
  • 定义不可变字典:使用let修饰符定义
let dict : [String : Any] = ["name" : "xyz" , "age" : 36, "height" : 1.86]
  • 定义可变字典:使用var修饰符定义
var dictM = [String : Any]()
  1. 对可变字典的操作
dictM["name"] = "xyz"
dictM["age"] = 36
dictM["height"] = 1.86
dictM["name"]
dictM["height"] = 1.58
dictM.removeValue(forKey: "name")
  1. 遍历字典
  • 遍历键
for key in dictM.keys {
    print(key)
}
  • 遍历值
for value in dictM.values {
    print(value)
}
  • 遍历键值对
for (key, value) in dictM {
    print(key)
    print(value)
}
  1. 合并字典
    只能通过遍历、往可变字典中追加的方式合并


九、元组

  1. 什么是元组?
    一种类似于数组或者字典的数据结构,可以用于定义一组数据。常用于作为方法的返回值
  2. 定义元组
  • 把元素用圆括号括起来,快速创建元组
let info1 = ("xyz",18,1.88)

通过点语法加下标获取元素

info1.0


  • 创建元组的同时给元组起别名。
let info2 = (name : "xyz", age : 18, height : 1.88)

获取元素时可以使用别名来获取元素

info2.name


  • 直接把元素的别名括起来作为元组的名称。这样的定义方式会直接给元素赋值,右侧元组内的元素会被分解为对应的变量或常量
let (name, age , height) = ("xyz", 18, 1.88)

取元素时可以直接用别名取

name
  1. 元组的比较
    如果元组中的值都可以比较,那么元组就可以比较
    元组比较按照从左往右、逐值比较的方式进行,知道发现有两个值不等为止。如果所有值都相等,那么两个元组相等。
(1, "abc") < (2, "aaa")    // true, 1 < 2
(4, "apple") < (4, "bad")    //true, 4 == 4, apple < bad
("abc", 12) == ("abc", 12)    //true 完全相等

注意:由于Bool类型不可以进行比较,所以包含布尔类型的元组不可比较


你可能感兴趣的:(Swift语法基础)