Swift 基础

基础类型安全

Int、double 、Float 、Bool、 Array 、Set 、Dictionary

!、 ? 、guard

类型注解( ype annotation )

    var  str : String   // 可根据声明赋值判断,也可以根据类型注解

一个十进制数,没有前缀
一个二进制数,前缀是 0b
一个八进制数,前缀是 0o
一个十六进制数,前缀是 0x

Int8  -128 ~ 127 ;  UInt8   0~255 

类型别名 ( typealias )

 typealias myColor = UIColor
var color = myColor.red

元组(Tuple) 返回多个值
元组是把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。

网络请求函数返回值 (Int, String) 元组来描述是否获取成功.

最适合函数返回值、值传递多个参数的情况,复杂的结构可以使用 Struct 、Class

可选类型( Optional )
泛指所有对象(类) >=oc 的 NSNotFound

 //convertedNumber 被推测为类型 "Int?", 或者类型 "optional Int"
 let possibleNumber  = "123"
let convertedNumber = Int(possibleNumber) 


var parameter: String?   //默认值为 nil

Swift 的 nil 和 Objective-C 中的 nil 并不一样。在 Objective-C 中,nil 是一个指向不存在对象的指针。在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。

异常处理

do {
    try shouldDoSomething()
} catch {
     <!---->
} 

断言和先决条件

assert(_:_:file:line:)

precondition(_:_:file:line:) 

枚举

值类型

enum SomeEnumeration {
// 枚举定义放在这里
}

//MARK   :CaseIterable
    SomeEnumeration.allCases.count

关联值

//元组
enum Point {
    case location(Int,Int)      //x,y
    case space(Int,Int,Int)     //x,y,z
}

 var currentPoint = Point.location(10, 20)
      currentPoint = .space(10, 20, 30)  //覆盖location

原始值
原始值类型相同,且内容不重复

Int 类型隐式赋值同 OC NS_Enum(){}, String 隐式为 字符串名称

使用枚举成员的 rawValue 属性可以访问该枚举成员的原始值:
->   Direct.north.rawValue
var  initD = Direct(rawValue: <#T##Int#>)

结构体

值类型
struct Person {
var age = 20
var name = “jack”
}

引用类型(同 指针)

恒等运算符 ===!== 判断两个变量或者常量是否引用了同一个类的实例。

区别

struct class 备注
值类型 引用类型
深拷贝 copy 副本 指针传递 class存储在堆中
copy on write 引用计数
函数编程 面向对象
不能继承 single 单继承
初始化 不需要实现 init :var 需要自己实现带参数的初始化接口
mutable 需要明确说明 一直是 mutable
多数都是struct(除去 协议、view ) viewModel 在MVVM中是 class-based (需要被共享->指针类型)

generics 泛型

//Element 泛型 T
struct Array<Element> {

    func append(_ element: Element ) {

    }
}

functions

也是一种类型、   (IntInt)-> Bool 

Closures

闭包    ==  内联函数

参考

Swiftgg-gitbook