swift学习笔记

@高效码农  August 26, 2020

文章只是根据自身情况,记录swift语言和其他语言的区别,请勿对号入座,请根据自身情况选择性学习:

一、类型注解

注意:类型注解作为一个需要了解的知识点,不做深入研究,因为在项目实操中很少需要写类型注解;理由是:Swift 可以推断出常量或者变量的类型

当你声明常量或者变量的时候可以加上类型注解(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类型注解,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。

var x:String

声明中的冒号代表着“是...类型”,所以这行代码可以被理解为:

“声明一个类型为 String ,名字为 x 的变量。”

“类型为 String ”的意思是“可以存储任意 String 类型的值。”

x 变量现在可以被设置成任意字符串:

x = "高效码农"
print(x)

完整代码:

var x:String
x = "高效码农"
print(x)

你可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型注解:

var red, green, blue: Double

二、整数

Swift提供的整数类型有:IntInt8Int16Int32Int64UIntUInt8UInt16UInt32UInt64

带U的为无符号整数;

除非你需要特定长度的整数,一般来说使用 Int 就够了。这可以提高代码一致性和可复用性。即使是在32位平台上,Int 可以存储的整数范围也可以达到 -2,147,483,648 ~ 2,147,483,647,大多数时候这已经足够大了。

三、类型别名

类型别名(type aliases)就是给现有类型定义另一个名字。你可以使用 typealias 关键字来定义类型别名。

typealias exmple = UInt32
var typeExmple = exmple.max

本例中,exmple 被定义为 UInt32 的一个别名。因为它是别名,exmple.min 实际上是 UInt32.max

,所以会给 typeExmple 赋一个初值 4294967295

项目实操中没有用到过这个特性,在其他语言实战中也没有遇到有类似需求的场景,不知道干啥用的;

四、可选类型

声明一个可选常量或者变量

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

五、可选绑定

在Swift中,返回值或者数据类型后面加 ?表示可选类型,值可以为空,但是后面加 !的话,表示告诉编译器,这个是一定有值的,相当于强制解析,如果没有值的话,就会崩。这是前提。实际应用举例如下:

let url = URL.init(string: "https://www.xugj520.cn")
//正常写惯了OC的话,为了保证程序的稳定性,强制解析前一定会加判断,通常会这么写
if url != nil {
    let request = URLRequest(url: url!)
}
//但是在工程中会有很多很多的可选类型,如果每个都这么写的话,看起来肯定不太优雅,所以Swift推出了一个可选绑定的写法
if let url = url {
    let request = URLRequest(url: url)


添加新评论