0%

swift-新东西

元组 Tuples

  1. 定义1:let info = (“joker”,100,true)
    info.0; info.1; info.2
  2. 定义2:let (name,age,good) = (“joker”,100,true)
    name, age, good
  3. 定义3:let info = (name:”joker”,age:100,good:true)
    info.name , info.age , info.good<br>

也可以定义用 _ 表示不关心该数据, 不能访问,元组的数据类型不能改变

结合关键字typealias比较好用

1
2
typealias namedFishesType = (first:Int, second:String, third:Bool)
let namedFishes: namedFishesType = (1, "tow", false)

元组判断 (使用下划线( _)来表明匹配所有可能的值)
1
2
3
4
5
6
7
8
9
10
11
12
13
let somePoint = (1, -1)
switch somePoint {
case (0, 0):   
 print("(0, 0) is at the origin")
case (_, 0):    
print("(\(somePoint.0), 0) is on the x-axis")
case (0, _):
    print("(0, \(somePoint.1)) is on the y-axis")
case (-2...2, -2...2):
    print("(\(somePoint.0), \(somePoint.1)) is inside the box")
default:    print("(\(somePoint.0), \(somePoint.1)) is outside of the box")}

// prints "(1, 1) is inside the box"

控制流

  1. do-while换成了repeat-while 其它不变
  2. 各种 condition : condition语句可以不用括号包裹,如 :if i>10{ statements}
    condition只支持true or false  不再像oc支持判空或者判0 必须加以判定,如:if ob != nil {}      if  index != 0 {}
  3. switch语句,不再需要显式break语句,不再贯穿,如果需要贯穿则需要加关键字 fallthrough
    可用区间匹配  ...  ..< 
    复合情况  ,可用,分隔  case 1,3,5,6:
  4. 可选项绑定 (与一般if控制流有区别,if 后condition 必定是Bool)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    let str = "12"        
    if let id = Int(str) {
    print("解析成功")
    }else{
    print("解析失败")
    }
    //普通if用法
    let str = "12"
    let id = Int(str)
    if id != nil {
    print("解析成功")
    }else{
    print("解析失败")
    }

?和!的使用和区别

问号?

  1. 声明时添加?,告诉编译器这个是Optional的,如果声明时没有手动初始化,就自动初始化为nil
  2. 在对变量值操作前添加?,判断如果变量时nil,则不响应后面的方法。

叹号!

  1. 声明时添加!,告诉编译器这个是Optional的,并且之后对该变量操作的时候,都隐式的在操作前添加!
  2. 在对变量操作前添加!,表示默认为非nil,直接解包进行处理

不确定类型

  1. AnyObject 可以表示任何类类型的实例。
  2. Any 可以表示任何类型,包括函数类型。

协议

  1. 协议可以放属性,子类可以继承修改 如:var nickName:String { get set}
  2. 协议可以放初始化方法