
Swift 5.2 基础教程
Swift 5.2 基础教程
Harvey66
默默耕耘:iOS、Swift、OC、Flutter、Python
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Swift 开发:优雅处理转义字符必定用到小技巧,OC 可没有此福利
一般是通过加斜杠(\)来处理转义字符,比如下面示例:let string = "\"Swift 5.2\": Hello world"print(string) /// "Swift 5.2": Hello world在 Swift 5.2 开始,我们可以使用两个 # 包起来处理转义字符,上面的示例可以这样写:let string2 = #""Swift 5.2": Hello world"#print(string2) /// "Swift 5.2": Hello world再来看一个拼接原创 2021-08-03 10:56:41 · 2915 阅读 · 0 评论 -
Swift 基础教程:检测 API 可用性
检测 iOS API 可用性if #available(iOS 10, *) {// 在 iOS 使用 iOS 10 或之后的 API}检测 macOS API 可用性if #available(macOS 10.15, *) {// 在 macOS 使用 macOS 10.15 或之后的 API}检测 tvOS API 可用性if #available(tvOS 10, *) {// 在 tvOS 使用 tvOS 10 或之后的 API}检测 watchOS API 可用性原创 2020-05-21 14:52:20 · 522 阅读 · 0 评论 -
Swift 基础教程:repeat-while 循环
repeat-while 是在 Swift 中才有, Objective-C 时代没有的。repeat-while 和其他语言的 do-while 类似。var index = 10repeat { print(index)}while index < 8// 10while index < 10 { print(index)}// 无输出不管何种情况 repeat 肯定会执行一次,然后判断循环条件,这与 while 循环刚好相反,这在使用时需要注意。原创 2020-05-21 14:36:44 · 629 阅读 · 0 评论 -
Swift 基础教程:逻辑运算符(Logical Operators)
常用逻辑运算符原创 2020-05-21 14:14:17 · 487 阅读 · 0 评论 -
Swift 基础教程:区间运算符
区间运算符(Range Operators)有2种闭区间运算符(n…m),n 不能大于 m,相当于数学的 [n, m]半开区间运算符(n…<m),相当于数学的 [n, m)区间运算符一般与 for-in 组合/// 闭区间运算符for index in 0...3 { print(index)}// 0// 1// 2// 3/// 半开区间运算符for index in 0..<3 { print(index)}// 0// 1// 2原创 2020-05-21 13:58:15 · 589 阅读 · 0 评论 -
Swift 断言调试,assert 函数
断言会在运行时判断一个逻辑条件是否为 true 。如果条件判断为 true ,代码运行会继续进 行;如果条件判断为 false ,代码执行结束,你的应用被终止。来看个触发断言示例let age = -1assert(age >= 1, "一个人的年龄必须大于0") // 因为 age < 0,所以断言会触发// assert(age > 0, "一个人的年龄必须大于0") // 因为 age <= 0,所以断言会触发如果你不需要断言信息,可以这样写let age =原创 2020-05-20 16:58:17 · 410 阅读 · 0 评论 -
Swift 元组(tuples)学习
元组(tuples)元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。在 Objetive-C 时代,并没有元组概念,在某些场景传递数据是很麻烦的,只能用数组/字典代替。在 Swift 时代,我们可以使用元组来描述一个网络请求错误let requetError = (404, "Not Found")print(requetError.0)print(requetError.1)一个元组里可以有多个元素,可以通过下标方式来访问元素,下标是从零开始的原创 2020-05-20 11:51:40 · 501 阅读 · 0 评论 -
Swift 学习,类型别名(type aliases),给现在有类型起别名, typealias 关键字
给 Int 起 别名typealias MyInt = Intlet num: MyInt = MyInt.maxprint(num)给 block 起 别名typealias MyBlock = () -> ()let myBlock: MyBlock = { print("this is block")}myBlock() // this is blocktypealias 关键字可以对所有类型起别名,比如 Float、Double、String 、Cocoa原创 2020-05-20 11:12:29 · 542 阅读 · 0 评论 -
Swift 学习,进制表示,十进制、二进制、八进制、十六进制
十进制,没有前辍let num1 = 16print(num1) // 16二进制,前辍 0blet num2 = 0b00010000print(num2) // 16八进制,前辍 0olet num3 = 0o00000020print(num3) // 16十六进制,前辍 0xlet num4 = 0x00000010print(num4) // 16原创 2020-05-20 10:45:12 · 520 阅读 · 0 评论 -
Swift 4.0 中的错误处理及抛出错误
在Swift的标准库,很多方法名后都带有’throws’这个关键词, ‘throws’表示该方法在执行过程中遇到错误则抛出,但不会crash。下面是Swift标准库中的一个构造方法,String、Data都有该构造方法public init(contentsOf url: URL) throws当我们通过该方法去构造一个实例时怎么去捕获抛出的错误呢(如果有错误)?捕获错误在S...原创 2017-10-31 18:26:41 · 665 阅读 · 0 评论 -
Swift 4.0 数组(Array)之过滤器(filter)的使用
我们先来定义一个常量整型数组let array = [5, 4, 3, 1, 2]过滤器(filter)使用之筛选出大于3的值let resultArray = array.filter { (item) -> Bool in return item > 3 } print(resultArray) // [5, 4]简化可以这样写let r...原创 2017-10-30 12:26:47 · 6799 阅读 · 0 评论 -
Swift 4.0 集合(Collection)排序
在 Swift 4.0 中有以下4个排序方法方法名应该场景描述func sort()变量无返回值,直接修改原始集合func sort(by areInIncreasingOrder: (Element, Element) throws -> Bool)变量无返回值,直接修改原始集合func sorted() -> [Element]变量、常...原创 2020-05-08 09:50:43 · 565 阅读 · 0 评论 -
Swift 4.0 学习,数据类型教程,字典(Dictionary)学习,字典(Dictionary)基本操作
定义字典常量(常量只有读操作)let dictionary1 = ["key1": 888, "key2": 999] let dictionary2: [String: Int] = ["key1": 888, "key2": 999]定义字典变量var dictionary: [String:Int] = [:]var dictionary1 = ["key1": 55,...原创 2017-10-27 16:51:06 · 1250 阅读 · 0 评论 -
Swift 4.0 字符串(String)学习
定义字符串常量(常量只有读操作) let lString = "constant" let lString1: String = "constant"定义字符串变量 var string = "" var string1: String = "哈哈" var string2 = String()赋值 string = ...原创 2017-10-27 20:43:50 · 1657 阅读 · 0 评论 -
Swift 4.0 高级-自定义操作符
在Swift语言中,常见的操作符有+、-、*、/、>、<、==、&&、||等等,如果不喜欢,你也可以定义自己喜欢的操作符。操作符类型中置运算符(infix operator) e.g. +、-、/、*前置运算符(prefix operator) e.g. --、++后置运算符(postfix operator) e.g. --、++ 注意:在...原创 2018-04-19 13:31:57 · 2710 阅读 · 1 评论 -
Swift4.1 新特性compactMap函数
关于compactMap函数苹果在Swift 4.1中新增compactMap函数,用来代替flatMap函数。在Swift标准库中compactMap定义如下public func compactMap<ElementOfResult>(_ transform: (Element) throws -> ElementOfResult?) rethrows -&g...原创 2018-05-22 16:17:28 · 9776 阅读 · 1 评论 -
Swift:字符串(String)分割之Substring优雅转换
认识Substring类型这是一个全新的类型,看类名像是String的子类,但是大家千万别被误导了,Substring并不是String的子类,这是两个不同的类型,但是它们都继承了StringProtocol协议,因此存在一些共性;在开发中Substring并不常用(目前只在分割String见到),所以往往要转成String字符串(String)分割函数下面是Swift中分割函数定义pub...原创 2018-12-26 20:43:07 · 11099 阅读 · 1 评论 -
Swift 5.2 新特性
Print 函数传参新格式let param = "参数"print(#"这是一个\#(param) xxxxx"#)允许在模块中定义和标准库中名称一样的类型比如在MyModule模块中定义Resultpublic enum Result<T> { case value(T) case error(Error)}如果你在任何代码中引入了 MyM...原创 2019-04-09 11:14:16 · 3085 阅读 · 0 评论 -
Swift 中的感叹号( ! )与问号( ? )之谜
基本了解在Swift代码会经常看到定义属性或方法参数时类型后面会紧跟一个感叹号( ! )或问号( ? ), 刚开始接触Swift的童鞋就可能不太明白之代表什么意思,一头雾水,开始凌乱了。本文将带你了解感叹号( ! )与问号( ? )之谜,首先问号( ? )是可选类型,是用来处理值可能缺失的情况,也就是没有值的情况(也就是OC中NULL); 感叹号( ! )就是与之相反的, 就是一定有值(非可选...原创 2019-05-07 11:24:48 · 1934 阅读 · 0 评论 -
Swift 4.0 数组(Array)学习
定义数组常量(常量只有读操作) let array1: [Int] = [11, 55, 5] let array2 = [11, 55, 5]定义数组变量var array: [Int] = [] // 这是我最喜欢的var array0: [Int] = [10, 20, 30] // 初始化并赋值var array1: [Int] = Array(...原创 2017-10-27 12:56:54 · 1182 阅读 · 1 评论