字符串和字符重点:
- Swift 的 String 和 Character 类型提供了一种快速且兼容 Unicode 的方式来处理代码中的文本内容。
- Swift 的 String 类型与 Foundation NSString 类进行了无缝桥接。Foundation 还对 String 进行扩展使其可以访问 NSString 类型中定义的方法。这意味着调用那些 NSString 的方法,你无需进行任何类型转换。
- 字符串字面量是由一对双引号包裹着的具有固定顺序的字符集。
- 特殊字符需要转义。 \0(空字符)、\(反斜线)、\t(水平制表符)、\n(换行符)、\r(回车符)、"(双引号)、'(单引号)。Unicode 标量,写成 \u{n},例如 \u{2665}
- 若不需转义,将字符串放在引号(")中并用数字符号(#)括起来
print(#"a\0b"#) //输出: a\"b
print("a\"b") // 输出:a"b
- 初始化空字符串
var emptyString = "" // 空字符串字面量
var anotherEmptyString = String() // 初始化方法
// 两个字符串均为空并等价。
- 在 Swift 中 String 类型是值类型,进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝
- 字符类型Character
- 字符串拼接 <String> + <String> 、<String>.append(<String or Character>)
- 字符串插值,可以在其中包含常量、变量、字面量和表达式。写法为 "\(<插值>)"
- Swift 中 String 基于 Unicode 标量,使用 count 计算字符串中Character的数量,如"🐨"在 Swift 中 count 为1,而在 OC 中 length 为2。
- 字符串索引 String.Index
- 插入一个字符 insert(_:at:) 插入一个段字符串insert(contentsOf:at:)
- 删除一个字符remove(at:) 删除一个子字符串removeSubrange(_:)
- 子字符串Substring
- 比较字符串:字符串字符相等、前缀相等和后缀相等
如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等,那就认为它们是相等的。只要可扩展的字形群集有同样的语言意义和外观则认为它们标准相等,即使它们是由不同的 Unicode 标量构成。
集合类型
官方文档集合类型
Swift 语言提供数组(Array)、集合(Set)和字典(Dictionary)三种基本的集合类型用来存储集合数据。数组是有序数据的集。集合是无序无重复数据的集。字典是无序的键值对的集。
Note:
Swift 的 Array、Set、Dictionary 被桥接到 Foundation 中对应的 NSArray、NSSet、NSDictionary 类型。
所以集合类型的使用大体与 OC 一致,但仍应尽量使用 Swift 中的集合类型。
控制流
官方文档https://swiftgg.gitbook.io/swift/swift-jiao-cheng/05_control_flow#for-in-loops
- for-in循环、while、repeat-while(do-while)循环
- 条件语句 if-else、 switch。
在 Swift 中使用switch时, break 不是必须的。switch提供了更加丰富和强大的功能,在学习枚举时会具体介绍。
-
控制转移语句
- continue:使本次循环结束,重新开始下次循环
- break:循环体中使用 break 时,会立刻中断该循环体的执行;switch 代码块中使用 break 时,会立即中断该 switch 代码块的执行。
- fallthrough:执行完一个 case 不跳出,进入下一个 case 中继续执行
- return:在函数章节讨论
- throw:在错误抛出章节讨论
-
带标签的语句
使用标签(statement label)来标记一个循环体或者条件语句,对于一个条件语句,你可以使用 break 加标签的方式,来结束这个被标记的语句。对于一个循环语句,你可以使用 break 或者 continue 加标签,来结束或者继续这条被标记语句的执行。 -
检测 API 可用性
if #available(iOS 10, macOS 10.12, *) {
// 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
// 使用先前版本的 iOS 和 macOS 的 API
}
网友评论