Swift学习笔记(一)

Swift 对空格有要求。

Swift数据类型

  • Int 相当于NSInteger,根据不同平台有不同的长度。
  • 无符号类型UInt,尽量不要使用UInt。
  • 浮点数,Double(64位浮点数),Float(32位浮点数)。
  • 布尔值,Swift有一个基本的布尔(Boolean)类型,叫做Bool。有两个布尔常量true,和False。在OC中为YES,NO.
  • 字符串,String,OC中对应为NSString。
  • 字符,Character,即单个字母。OC中对应为Char。
  • 可选类型,Optional,用来处理值可能缺失的情况。表示有值或没有值

类型别名

typealias,对当前类型定义另一个名字。typealias newStr = String

类型安全

type safe,Swift会在编译代码时进行类型检查(type checks)

类型推断

如果没有显示指定类型,Swift会使用类型推断(type inference)来选择合适的类型。浮点数会优先推断为Double。

Swift可选类型

Swift使用 ? 作为命名类型Optional的简写,Optional是一个含有两种情况的枚举,None和Some(T),用来表示可能或可能没有值。任何类型都可以声明或隐式转换为可选类型,声明时要确保给操作符一个合适的范围。类型和?之间没有空格。以下两种方式等价。

var optionalInt: Int?
var optionalInt2: Optional

声明可选变量如未给定初始值,默认为nil。

强制解析

当使用操作符声明时,如果确定可选类型包含值一个非nil值,可以在变量后面加上!来强制解析(forced unwrapping)。如果值为nil则会导致运行时错误。

自动解析

声明可选变量时,使用!替换,这样在解析可选变量时就可以不用加上!,以实现自动解析。

可选绑定�

使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含就把值复制给一个临时常量或变量。eg:

// 可选绑定
if let myInt = optionalInt {
    print(myInt)
}

Swift 常量�

Swift常量使用关键字let声明,必须初始值。let constantName =

类型标注

声明一个常量或者变量时候可以选择加上类型标注(type annotation),用于说明常量或者变量中要存储的值的类型。使用方法为在常量或者变量后加上冒号空格,然后加上类型名称。 var constantName: =

输出

Swift中使用print替换了原来的println函数来输出常量和变量。在字符串中可以使用\()来插入常量和变量。

Swift字面量

字面量:能够直接了当的指出自己的类型并为变量进行赋值的值,如整型字面量、浮点型字面量、字符串型字面量和布尔型字面量。

字符串型字面量的转义

转义字符 含义
\0 空字符
\ 反斜线 \
\b 退格(BS) , 将当前位置移到前一列
\f 换页(FF),将当前位置移到下页开头
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
' 单引号
" 双引号
\000 1到3位八进制数所代表的任意字符
\xhh... 1到2位十六进制所代表的任意字符

布尔型字面量默认类型为Bool,包含三个值:true , false , nil

Swift运算符

运算符是一个符号,用户告诉编译器执行一个数学或逻辑运算。包含

  • 算数运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 区间运算符(闭区间运算符:...。 半开区间运算符:..<。)
  • 其他运算符(一元加、一元减、三元运算符)

Swift条件语句

语句 描述
if 语句 if 语句由一个布尔表达式和一个或多个执行语句组成。
if...else语句 if 语句后可以有可选的 else 语句, else 语句在布尔表达式为 false 时执行。可用?:代替
if...else if...else 语句 if 后可以有可选的 else if...else 语句, else if...else 语句常用于多个条件判断。
内嵌 if 语句 你可以在 if 或 else if 中内嵌 if 或 else if 语句。
switch 语句 switch 语句允许测试一个变量等于多个值时的情况。

Swift循环

循环类型

循环类型 描述
for-in 遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。
for 循环 用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。
while 循环 运行一系列语句,如果条件为true,会重复运行,直到条件变为false。
repeat...while 循环 类似 while 语句区别在于判断循环条件之前,先执行一次循环的代码块。类似于do...while。

循环控制语句

控制语句 描述
continue 语句 告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
break 语句 中断当前循环。
fallthrough 语句 如果在一个case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。

Swift字符串

Swift字符串类型为String

字符串创建

var stringA = "I`m string" // 字面量创建
var stringB = String("I`m string too") // String实例化,不推荐

空字符串

创建空字符串:

var stringA = "" // 字面量创建
var stringB = String() // String实例化创建

isEmpty可用来判断字符串是否为空!

字符串连接

字符串可通过+来连接

字符串长度

字符串可通过String.characters.count属性来计算

字符串比较

字符串通过==来比较是否相等

字符串函数和运算符

  1. isEmpty 判断字符串是否为空,返回布尔值
  2. hasPrefix(prefix: String) ,检查字符串是否拥有特定后缀
  3. hasSuffix(suffix: String) ,检查字符串是否拥有特定后缀。
  4. Int(String) ,转换字符串数字为整型。 实例: let myString: String = "256" let myInt: Int? = Int(myString)
  5. String.characters.count ,计算字符串的长度
  6. utf8 ,您可以通过遍历 String 的 utf8 属性来访问它的 UTF-8 编码
  7. utf16 ,您可以通过遍历 String 的 utf8 属性来访问它的 UTF-16 编码
  8. unicodeScalars 您可以通过遍历String值的unicodeScalars属性来访问它的 Unicode 标量编码.
    • 连接两个字符串,并返回一个新的字符串
  9. += 连接操作符两边的字符串并将新字符串赋值给左边的操作符变量
  10. == 判断两个字符串是否相等
  11. < 比较两个字符串,对两个字符串的字母逐一比较。
  12. != 比较两个字符串�是否不相等。

swift字符

Swift字符数据类型为Character.Swift无法创建空的Character类型的变量或常量。

遍历字符串中的字符

for ch in "I`m string".characters {
    print(ch)
}

字符串连接字符

可以使用String的append(c: Character)来连接字符

var char: Character = "A"
stringA.append(char)
print(stringA)

Swift数组

Swift中数组的数据类型为Array,使用有序列表存储同一类型的多个值。Swift中的数组元素类型没有限制。

创建数组

var emptyArray = [someType]() // 空数组
var sizeArray = [someType](repeating: 0, count: 3) // 大小为3,初始值为0的数组
var someArray = [1,2,3] // 直接创建

访问数组

根据数组的索引来访问数组的元素。var someVar = someArray[index]

使用count属性来计算数组元素个数

使用isEmpty属性判断数组是否为空,返回布尔值。

修改数组

  • 通过索引来直接更改元素的值
  • 通过append()方法或者赋值运算符+=在数组末尾添加元素。

遍历数组

  • 使用for in 遍历
  • 使用enumerate()方法进行数组遍历。

合并数组

使用+来合并两种相同类型的数组。新数组的类型会从两个数组的数据类型中推断出来。

Swift字典

Swift字典用来存储无序的相同类型数据的集合。Swift中的Key和Value的类型没有限制。

创建字典

与数组相似。

var emptyDict = [keyType : valueType]() // 空字典
var someDict: [Int : Int] = [1:11, 2: 22] // 字典实例

访问字典

通过字典的索引Key来访问数组元素。var someVar = someDict[key]

使用只读属性count计算字典有多少键值对

使用只读属性isEmpty属性来判断字典是否为空,返回布尔值。

修改字典

  • 通过下标key增加或修改字典。key存在则修改,key不存在则增加
  • 通过updateValue(value: Value, forKey key: Key) -> Value?来增加或修改字典。规则同上。

移除Key-Value

  • 通过设置下标key的Value为nil来移除。
  • 通过removeValue(forKey: Key) -> Value?来移除,若key存在则返回value值,反之返回nil.

遍历字典

  • 使用for-in循环遍历
  • 使用enumerate()进行遍历,返回字典索引和键值对
for (key , value) in someDict {
    print("\(key):\(value)")
}

for (index , value) in someDict.enumerate() {
    print("\(index):\(value)")
}

字典转换为数组

提取字典的键值,并转换为独立的数组。

let arrayKeys = [Int](someDict.keys)
let arrayValues = [Int](someDict.values)

参考:

Swift 教程 | 菜鸟教程

你可能感兴趣的:(Swift学习笔记(一))