![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Swift2
码农老关【关东升】
20多年的老程序员,技术作家、架构师、项目经理。
熟悉Java、Kotlin、Python、iOS、Android、游戏开发。参与设计和开发北京市公交一卡通百亿级大型项目,金融系统微博等移动客户端项目。著有从小白到大牛系列、漫画Python等畅销书作者!《iOS开发指南》等50多部图书。
展开
-
《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
原创文章,欢迎转载。转载请注明:关东升的博客 对应可变字符串可以插入、删除和替换,String提供了几个方法可以帮助实现这些操作。这些方法如下:splice(_:atIndex:)。在索引位置插入字符串。insert(_:atIndex:)。在索引位置插入字符。removeAtIndex(_:)。在索引位置删除字符。removeRange(_:)。删除指定范围内的字符串。replaceRa原创 2015-09-18 09:59:15 · 7471 阅读 · 6 评论 -
《从零开始学Swift》学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?
原创文章,欢迎转载。转载请注明:关东升的博客 使用var还是let?在我们开发过程中啊什么时候定义关键字为var,还是定义为let呢?其实啊都能满足我们的需求,那我们到底应该如何选择?例如:可以将圆周率π定义为let或var。let π = 3.14159var π = 3.14159上面代码编译不会报错。但是从业务逻辑层面讲,π应该定义为常量(let)的,因为一方面常量(let)不能修改原创 2015-08-26 12:34:01 · 2282 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 7)——Swift 2.0中的print函数几种重载形式
原创文章,欢迎转载。转载请注明:关东升的博客 Swift 2.0中的print函数有4种重载形式:print(_:)。输出变量或常量到控制台,并且换行。print(_:_:)。输出变量或常量到指定类型的流中,并且换行。print(_:appendNewline:)。输出变量或常量到控制台,appendNewline参数是布尔值,true表示换行,false表示不换行。print(_:_:ap原创 2015-08-28 09:24:54 · 2231 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用
原创文章,欢迎转载。转载请注明:关东升的博客 计算机语言学习中都有常量和变量,他们几乎是我编写代码的灵魂了,离开他们我真的是“活不了”常量是标识符的前面加上关键字let。常量其值在使用过程中不会发生变化的量,下面是声明常量:let _Hello = "Hello"注意哦常量只能在初始化的时候被赋值,如果再次给_Hello赋值,比如: _Hello = "Hello, World"程序会报错的原创 2015-08-31 09:41:04 · 2404 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 9)——离开表达式你试试!
Swift 2.0学习笔记(Day 9)——离开表达式你试试!原创文章,欢迎转载。转载请注明:关东升的博客 表达式啊是很重要地。在Swift中,表达式有3种形式。l 不指定数据类型var a1 = 10l 指定数据类型var a1:Int = 10l 使用分号var a1:Int = 10; vara2:Int = 20在Swift语言中,一条语句结束后可以不加分号也可以添加分号,但是有原创 2015-09-08 10:19:52 · 2282 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?
原创文章,欢迎转载。转载请注明:关东升的博客 运算符是用于执行程序代码运算,会针对一个或一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。那么“+、-、*、/”是运算符。 运算符有哪几种呢? 在Swift语言中主要的运算符包括算术、关系、逻辑、位运算符等。“ +、-、*、/ ”是算术运算符中的二元运算符,一元运算符是是-、++原创 2015-09-09 10:52:46 · 2653 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 11)——数据类型那些事儿?
原创文章,欢迎转载。转载请注明:关东升的博客 在我们学习语言时都会学到这种语言的数据类型,在Swift中数据类型有那些呢?整型、浮点型、布尔型、字符、字符串这些类型是一定有的,其中集合、枚举、结构体、类也是Swift中的数据类型。元组是Swift中特有的。其他那些类型我们可能多少知道些或是听说过。元组是在Swift中有的,它是什么呢?它是一种数据结构,在数学中应用广泛。在计算机科学中,元组原创 2015-09-11 10:00:18 · 2197 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 12)——说几个特殊运算符
原创文章,欢迎转载。转载请注明:关东升的博客 除了一些常用的运算符,还有一些其他的:• 引用号(.):实例调用属性、方法等操作符。• 问号(?):用来声明可选类型。• 感叹号(!):对可选类型值进行强制拆封。• 箭头(->):说明函数或方法返回值类型。• 冒号运算符(:):用于字典集合分割“键值”对。…… 欢迎关注关东升新浪微博@tony原创 2015-09-14 10:39:13 · 2103 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 13)——数据类型之整型和浮点型
原创文章,欢迎转载。转载请注明:关东升的博客 Swift提供8、16、32、64位形式的有符号及无符号整数。这些整数类型遵循C语言的命名规约,我归纳了Swift中的整型: 整型示例:print("UInt8 range: \(UInt8.min) ~ \(UInt8.max)")print("Int8 range: \(Int8.min) ~ \(Int8原创 2015-09-16 13:47:14 · 2227 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 15)——请注意数字类型之间的转换
原创文章,欢迎转载。转载请注明:关东升的博客 在C、Objective-C和Java等其他语言中,整型之间有两种转换方法: 从小范围数到大范围数转换是自动的; 从大范围数到小范围数需要强制类型转换,有可能造成数据精度的丢失。 而在Swift中这两种方法是行不通的,需要通过一些函数进行显式地转换,代码如下: let historyScore:UInt8 = 90原创 2015-09-21 10:27:51 · 2368 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 16)——字典集合
原创文章,欢迎转载。转载请注明:关东升的博客 Swift字典表示一种非常复杂的集合,允许按照某个键来访问元素。字典是由两部分集合构成的,一个是键(key)集合,一个是值(value)集合。键集合是不能有重复元素的,而值集合是可以重复的,键和值是成对出现的。字典声明与初始化 Swift字典类型是Dictionary,也是一个泛型集合。 在声明一个Dictionary类型的时候可以使用下面的原创 2015-09-23 10:30:01 · 2689 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
原创文章,欢迎转载。转载请注明:关东升的博客 数组(Array)是一串有序的由相同类型元素构成的集合。数组中的集合元素是有序的,可以重复出现。声明一个Array类型的时候可以使用下面的语句之一。var studentList1:Array var studentList2: [String]声明的Array还不能用,还需要进行初始化,Array类型往往在声明的同时进行初始化。示例代码如下:v原创 2015-09-25 13:48:24 · 3216 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 18)——有几个分支语句?
原创文章,欢迎转载。转载请注明:关东升的博客 分支语句又称条件语句,Swift编程语言提供了if、switch和guard三种分支语句。 if语句由if语句引导的选择结构有if结构、if-else结构和else-if结构3种。 if结构示例代码如下:var score = 95 if score >= 85 { print("您真优秀!")} 程序运行结果如下:您真优原创 2015-09-28 11:46:05 · 1987 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 19)——函数参数传递
原创文章,欢迎转载。转载请注明:关东升的博客 函数的语法格式如下: func 函数名(参数列表) -> 返回值类型 { 语句组 return 返回值}关键字是func。多个参数列表之间可以用逗号(,)分隔,也可以没有参数。使用箭头“->”指示返回值类型。返回值有单个值和多个值。如果函数没有返回值,则“-> 返回值类型”部分可以省略。如果函数有返回值,就需要在函数体最后使用retu原创 2015-09-30 10:17:00 · 4350 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 20)——函数中参数的传递引用
原创文章,欢迎转载。转载请注明:关东升的博客 参数的传递引用类是引用类型,其他的数据类型如整型、浮点型、布尔型、字符、字符串、元组、集合、枚举和结构体全部是值类型。有的时候就是要将一个值类型参数以引用方式传递,这也是可以实现的,Swift提供的inout关键字就可以实现。看下面的一个示例:func increment(inout value:Double, amount:Double = 1原创 2015-10-09 10:31:13 · 2963 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 21)——函数返回值
原创文章,欢迎转载。转载请注明:关东升的博客 返回值3种形式:无返回值、单一返回值和多返回值。 无返回值函数所谓无返回结果,事实上是Void类型,即表示没有数据的类型。无返回值函数的语法格式有如下3种形式: func 函数名(参数列表) { 语句组} func 函数名(参数列表) ->() { 语句组} func 函数名(参数列表) ->Void { 语句组}无返回值函数原创 2015-10-12 10:39:36 · 2629 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 22)——闭包那些事儿!
原创文章,欢迎转载。转载请注明:关东升的博客 我给Swift 中的闭包一个定义:闭包是自包含的匿名函数代码块,可以作为表达式、函数参数和函数返回值,闭包表达式的运算结果是一种函数类型。Swift中的闭包类似于Objective-C中的代码块、Java中的匿名内部类。 使用闭包表达式Swift中的闭包表达式很灵活,其标准语法格式如下:{ (参数列表) ->返回值类型 in 语句组}其中,原创 2015-10-14 11:03:18 · 2292 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 50)——扩展计算属性、方法
原创文章,欢迎转载。转载请注明:关东升的博客 可以在原始类型上扩展计算属性,包括实例计算属性和静态计算属性。添加计算属性的定义,与普通的计算属性的定义是一样的。实例计算属性示例:在网络编程时,为了减少流量,从服务器端返回的不是信息描述,而是编码,然后在本地再将编码转换为描述信息。为此定义了如下Int类型扩展:extension Int { //定义Int类型的扩展原创 2015-12-21 11:08:17 · 2145 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day48)——类型检查与转换
原创文章,欢迎转载。转载请注明:关东升的博客 继承会发生在子类和父类之间,是一系列类的继承关系。例如:Person是类层次结构中的根类,Student是Person的直接子类,Worker是Person的直接子类。这个继承关系类的具体实现代码如下:class Person { var name: String var age: Int func desc原创 2015-12-14 10:47:39 · 2081 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 49)——扩展声明
原创文章,欢迎转载。转载请注明:关东升的博客 声明扩展的语法格式如下:extension 类型名 { //添加新功能}声明扩展的关键字是extension,“类型名”是Swift中已有的类型,包括类、结构体和枚举,但是我们仍然可以扩展整型、浮点型、布尔型、字符串等基本数据类型,这是因为这些类型本质上也是结构体类型。打开Int的定义如下:struct Int : SignedInt原创 2015-12-16 15:33:22 · 2243 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 1)——我的第一行Swift代码
Swift 2.0学习笔记——我的第一行Swift代码 当第一次看到下面代码时我石化了,这些代码是什么东东?单词拼出来的? import Foundation var str = "HelloWorld" print(str) 晕晕、好吧,低头继续往下看,哦明白了第一句:import Foundation表示引入Foundation框原创 2015-08-18 10:55:04 · 4421 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 32)——计算属性
原创文章,欢迎转载。转载请注明:关东升的博客 计算属性本身不存储数据,而是从其他存储属性中计算得到数据。 计算属性概念:计算属性提供了一个getter(取值访问器)来获取值,以及一个可选的setter(设置访问器)来间接设置其他属性或变量的值。计算属性的语法格式如下:面向对象类型 类型名 { 存储属性 ...... var 计算属性名: 属性数据原创 2015-11-06 10:28:23 · 1907 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式
原创文章,欢迎转载。转载请注明:关东升的博客 Swift 1.x的错误处理模式存在很多弊端,例如:为了在编程时候省事,给error参数传递一个nil,或者方法调用完成后不去判断error是否为nil,不进行错误处理。let contents = NSString(contentsOfFile: filePath, Êencoding: NSUTF8StringEncodi原创 2015-12-28 09:25:39 · 5454 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 59)——代码排版
原创文章,欢迎转载。转载请注明:关东升的博客 代码排版包括: 空行、空格、断行和缩进等内容。代码排版内容比较多工作量很多,但是非常重要。空行空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是添加空行:类型声明之前。import语句前后。两个方法或函数之间。块注释或单行注释之前。方法或函数内的两个逻辑段之间,用以提高可读性。一个源文件的两个片段之间。空格在代码中有些位置是需要有空格的,这个原创 2016-01-15 10:38:46 · 1849 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day60)——Core Foundation框架
创文章,欢迎转载。转载请注明:关东升的博客 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API。虽然在Swift中调用这种C语言风格的API比较麻烦,但是在OS X和iOS开发过程中,有时候使用CoreFoundation框架的API是非常方便的,例如在与C语言混合编码的时候。Core Foundation框架与Foundati原创 2016-01-15 10:41:53 · 2870 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理
原创文章,欢迎转载。转载请注明:关东升的博客 在Swift原生数据类型、Foundation框架数据类型和Core Foundation框架数据类型之间转换过程中,虽然是大部分是可以零开销桥接,零开销并不意味着内存什么都不用管。Swift类型内存管理是采用ARC,Foundation类型和Core Foundation类型内存管理都是采用MRC或ARC,CoreFoundation类型内存管理是基原创 2016-01-18 10:16:36 · 2204 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象
原创文章,欢迎转载。转载请注明:关东升的博客 内存托管对象Swift中调用CoreFoundation函数获得对象时候,对象分为:内存托管对象和内存非托管对象。内存托管对象就是由编译器帮助管理内存,我们不需要调用CFRetain函数获得对象所有权,也不需要调用CFRelease函数放弃对象所有权。获得这些内存托管对象的方法,是采用了CF_RETURNS_RETAINED或CF_RETURNS_N原创 2016-01-20 10:19:59 · 2794 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 64)——Cocoa Touch设计模式及应用之目标与动作
原创文章,欢迎转载。转载请注明:关东升的博客 目标(Target)与动作(Action)是iOS和OS X应用开发的中事件处理机制。 问题提出如图所示是一个ButtonLabelSample案例设计原型图,其中包含一个标签和一个按钮,当点击按钮的时候,标签文本会从初始的Label替换为HelloWorld。 ButtonLabelSample案例首先要解决的问题是:按钮点击事件后有谁负责响应事件原创 2016-01-25 15:14:55 · 3030 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
原创文章,欢迎转载。转载请注明:关东升的博客 实现目标与动作关联使用UIControl类addTarget(_:action:forControlEvents:)方法,示例代码如下:button.addTarget(self, action: "onClick:", ÊforControlEvents: UIControlEvents.TouchUpInside原创 2016-01-27 12:47:01 · 2531 阅读 · 1 评论 -
《从零开始学Swift》学习笔记(Day 66)——Cocoa Touch设计模式及应用之通知机制
原创文章,欢迎转载。转载请注明:关东升的博客 通知(Notification)机制是基于观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是 MVC( 模型-视图-控制器)模式的重要组成部分。 问题提出天气一直是英国人喜欢讨论的话题,而最近几年天气的变化也成为中国人非常关注的话题。我会根据天气预报决定是坐地铁还是开车上班,我的女儿也会根据天气预报决定明天穿原创 2016-01-28 17:31:53 · 2400 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day67)——Cocoa Touch设计模式及应用之MVC模式
原创文章,欢迎转载。转载请注明:关东升的博客 MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之一,它最早出现在Smalltalk语言中。现在,很多计算机语言和架构都采用了MVC模式。 MVC模式概述MVC模式是一种复合设计模式,由 “观察者”(Observer)模式、“策略”(Strategy)模式和“合成”(Composite)模式等组成。原创 2016-02-17 10:04:09 · 2596 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件
原创文章,欢迎转载。转载请注明:关东升的博客 应用与用户进行交互,依赖于各种各样的事件。事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的。响应者链在事件处理中是非常重要的,响应者链可以把用户事件路由给正确的对象。 响应者对象与响应链UIResponder是所有响应者对象的基类,它不仅为事件处理,而且也为常见的响应者行为定义编程接口。UIApplicat原创 2016-02-19 10:20:41 · 2065 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射
原创文章,欢迎转载。转载请注明:关东升的博客 如果引入必要的头文件,在Objective-C语言中可以使用C数据类型。而在Swift语言中是不能直接使用C数据类型,苹果公司为Swift语言提供与C语言相对应数据类型。这些类型主要包括:C语言基本数据类型和指针类型。 C语言基本数据类型如表所述是Swift数据类型与C语言基本数据类型对应关系表。 Swift语言中的这些数据类型与Swift原生的原创 2016-03-02 13:41:39 · 3581 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式
原创文章,欢迎转载。转载请注明:关东升的博客 什么是设计模式。设计模式是在特定场景下对特定问题的解决方案,这些解决方案是经过反复论证和测试总结出来的。实际上,除了软件设计,设计模式也被广泛应用于其他领域,比如UI设计和建筑设计等。下面来介绍Cocoa Touch框架中的设计模式中的单例模式。 单例模式单例模式的作用是解决“应用中只有一个实例”的一类问题。在Cocoa Touch框架中,有UIAp原创 2016-03-22 13:21:45 · 3693 阅读 · 0 评论 -
关东升的《从零开始学Swift》3月9日已经上架
大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部分,包括Swift语法篇、Cocoa Touch框架编程篇、混合编程篇、进阶篇和项目实战篇,囊括了开发工具介绍、语言基础知识,直至应用在App Store上线的所有内容。此外,本书前20 章专门配有同原创 2016-03-11 10:55:04 · 5783 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 23)——尾随闭包
原创文章,欢迎转载。转载请注明:关东升的博客 闭包表达式可以作为函数的参数传递,如果闭包表达式很长,就会影响程序的可读性。尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。下面我们来看一个示例代码:func calculate(opr: String, funN:(Int, Int) -> Int) { //最后一个参数funN是(Int,Int)-> In原创 2015-10-16 11:09:28 · 3028 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 24)——枚举
原创文章,欢迎转载。转载请注明:关东升的博客 Swift中的枚举可以定义一组常量、提高程序的可读性;还具有面向对象特性。使用enum关键词声明枚举类型,具体定义放在一对大括号内,枚举的语法格式如下:enum 枚举名{ 枚举的定义}“枚举名”是该枚举类型的名称。它首先应该是有效的标识符,其次应该遵守面向对象的命名规范,它由一组成员值和一组相关值组成。成员值枚举的成员值默认情况下不是整数类型原创 2015-10-19 11:56:39 · 2213 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言
原创文章,欢迎转载。转载请注明:关东升的博客 在Swift语言出现之前,开发iOS或OS X应用主要使用Objective-C语言,此外还可以使用C和C++语言,但是UI部分只能使用Objective-C语言。 选择语言Swift语言出现后,苹果公司给程序员提供了更多的选择,让这两种语言并存。既然是并存,我们就有4种方式可以选择:采用纯Swift的改革派方式;采用纯Objective-C的保守派原创 2016-02-24 10:16:07 · 2892 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 45)——重写方法
原创文章,欢迎转载。转载请注明:关东升的博客 重写实例方法在子类中重写从父类继承来的实例方法和静态方法。先介绍实例方法的重写。下面看一个示例:class Person { var name: String var age: Int func description() -> String { //实例方法 retu原创 2015-12-07 09:55:58 · 2006 阅读 · 0 评论 -
《从零开始学Swift》学习笔记(Day 70)——Swift与Objective-C混合编程之Swift与Objective-C API映射
原创文章,欢迎转载。转载请注明:关东升的博客 Swift与Objective-C API映射在混合编程过程中Swift与Objective-C调用是双向的,由于不同语言对于相同API的表述是不同的,他们之间是有某种映射规律的,这种API映射规律主要体现在构造函数和方法两个方面。 1、构造函数映射在Swift与Objective-C语言进行混合编程时,首先涉及到调用构造函数实例化对象问题,不同语原创 2016-02-26 10:00:20 · 2710 阅读 · 0 评论