Swift 继承 继承我们可以理解为一个类获取了另外一个类的方法和属性。 当一个类继承其它类时,继承类叫子类,被继承类叫超类(或父类) 在 Swift 中,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写它们。 我们也可以为类中继承来的属性添加属性观察器。 基类 没有继承其它类的类,称之为基类(Base Class)。 以下实例中我们定义了基类 StudDetails ,描述了学生(stname)及其各科成绩的分数(mark1、mark2、mark3): class StudDetails { var stname: String! var mark1: Int! var mark2: Int! var mark3: Int! init(stname: String, mark1: Int, mark2: Int, mark3: Int) { self.stname = stname self.mark1 = mark1 self.mark2…
Category: Mobile
Swift 类 Swift 类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性(常量、变量)和方法。 与其他编程语言所不同的是,Swift 并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类,系统会自动生成面向其它代码的外部接口。 类和结构体对比 Swift 中类和结构体有很多共同点。共同处在于: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访问值 定义构造器用于生成初始化值 通过扩展以增加默认实现的功能 符合协议以对某类提供标准功能 与结构体相比,类还有如下的附加功能: 继承允许一个类继承另一个类的特征 类型转换允许在运行时检查和解释一个类实例的类型 解构器允许一个类实例释放任何其所被分配的资源 引用计数允许对一个类的多次引用 语法: class classname { Definition 1 Definition 2 …… Definition N } 类定义 class student{ var studname: String var mark: Int var mark2: Int…
Swift 属性 Swift 属性将值跟特定的类、结构或枚举关联。 属性可分为存储属性和计算属性: 存储属性 计算属性 存储常量或变量作为实例的一部分 计算(而不是存储)一个值 用于类和结构体 用于类、结构体和枚举 存储属性和计算属性通常用于特定类型的实例。 属性也可以直接用于类型本身,这种属性称为类型属性。 另外,还可以定义属性观察器来监控属性值的变化,以此来触发一个自定义的操作。属性观察器可以添加到自己写的存储属性上,也可以添加到从父类继承的属性上。 存储属性 简单来说,一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量。 存储属性可以是变量存储属性(用关键字var定义),也可以是常量存储属性(用关键字let定义)。 可以在定义存储属性的时候指定默认值 也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值 import Cocoa struct Number { var digits: Int let pi = 3.1415 } var n = Number(digits: 12345) n.digits = 67 print(“\(n.digits)”) print(“\(n.pi)”) 以上程序执行输出结果为: 67 3.1415…
Swift 枚举 枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。 Swift 的枚举类似于 Objective C 和 C 的结构,枚举的功能为: 它声明在类中,可以通过实例化类来访问它的值。 枚举也可以定义构造函数(initializers)来提供一个初始成员值;可以在原始的实现基础上扩展它们的功能。 可以遵守协议(protocols)来提供标准的功能。 语法 Swift 中使用 enum 关键词来创建枚举并且把它们的整个定义放在一对大括号内: enum enumname { // 枚举定义放在这里 } 例如我们定义以下表示星期的枚举: import Cocoa // 定义枚举 enum DaysofaWeek { case Sunday case Monday case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case…
Swift 结构体 Swift 结构体是构建代码所用的一种通用且灵活的构造体。 我们可以为结构体定义属性(常量、变量)和添加方法,从而扩展结构体的功能。 与 C 和 Objective C 不同的是: 结构体不需要包含实现文件和接口。 结构体允许我们创建一个单一文件,且系统会自动生成面向其它代码的外部接口。 结构体总是通过被复制的方式在代码中传递,因此它的值是不可修改的。 语法 我们通过关键字 struct 来定义结构体: struct nameStruct { Definition 1 Definition 2 …… Definition N } 实例 我们定义一个名为 MarkStruct 的结构体 ,结构体的属性为学生三个科目的分数,数据类型为 Int: struct MarkStruct{ var mark1: Int var mark2: Int var mark3:…
Swift 函数 Swift 函数用来完成特定任务的独立的代码块。 Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法。 函数声明: 告诉编译器函数的名字,返回类型及参数。 函数定义: 提供了函数的实体。 Swift 函数包含了参数类型及返回值类型: 函数定义 Swift 定义函数使用关键字 func。 定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。 每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。函数的参数传递的顺序必须与参数列表相同。 函数的实参传递的顺序必须与形参列表相同,-> 后定义函数的返回值类型。 语法 func funcname(形参) -> returntype { Statement1 Statement2 …… Statement N return parameters } 实例 以下我们定义了一个函数名为 runoob 的函数,形参的数据类型为 String,返回值也为 String: import Cocoa func runoob(site: String) ->…
Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 匿名函数比较相似。 全局函数和嵌套函数其实就是特殊的闭包。 闭包的形式有: 全局函数 嵌套函数 闭包表达式 有名字但不能捕获任何值。 有名字,也能捕获封闭函数内的值。 无名闭包,使用轻量级语法,可以根据上下文环境捕获值。 Swift中的闭包有很多优化的地方: 根据上下文推断参数和返回值类型 从单行表达式闭包中隐式返回(也就是闭包体只有一行代码,可以省略return) 可以使用简化参数名,如$0, $1(从0开始,表示第i个参数…) 提供了尾随闭包语法(Trailing closure syntax) 语法 以下定义了一个接收参数并返回指定类型的闭包语法: {(parameters) -> return type in statements } 实例 import Cocoa let studname = { print(“Swift 闭包实例。”) }…
Swift 字符(Character) Swift 的字符是一个单一的字符字符串字面量,数据类型为 Character。 以下实例列出了两个字符实例: import Cocoa let char1: Character = “A” let char2: Character = “B” print(“char1 的值为 \(char1)”) print(“char2 的值为 \(char2)”) 以上程序执行输出结果为: char1 的值为 A char2 的值为 B 如果你想在 Character(字符) 类型的常量中存储更多的字符,则程序执行会报错,如下所示: import Cocoa // Swift 中以下赋值会报错 let char: Character = “AB” print(“Value…
Swift 数组 Swift 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 Swift 数组会强制检测元素的类型,如果类型不同则会报错,Swift 数组应该遵循像Array<Element>这样的形式,其中Element是这个数组中唯一允许存在的数据类型。 如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变数组里的项目。如果将一个数组赋值给常量,数组就不可更改,并且数组的大小和内容都不可以修改。 创建数组 我们可以使用构造语法来创建一个由特定数据类型构成的空数组: var someArray = [SomeType]() 以下是创建一个初始化大小数组的语法: var someArray = [SomeType](repeating: InitialValue, count: NumbeOfElements) 以下实例创建了一个类型为 Int ,数量为 3,初始值为 0 的空数组: var someInts = [Int](repeating: 0, count: 3) 以下实例创建了含有三个元素的数组: var someInts:[Int] = [10, 20, 30] 访问数组 我们可以根据数组的索引来访问数组的元素,语法如下: var…
Swift 字典 Swift 字典用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。 Swift 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。 Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。 如果创建一个字典,并赋值给一个变量,则创建的字典就是可以修改的。这意味着在创建字典后,可以通过添加、删除、修改的方式改变字典里的项目。如果将一个字典赋值给常量,字典就不可修改,并且字典的大小和内容都不可以修改。 创建字典 我们可以使用以下语法来创建一个特定类型的空字典: var someDict = [KeyType: ValueType]() 以下是创建一个空字典,键的类型为 Int,值的类型为 String 的简单语法: var someDict = [Int: String]() 以下为创建一个字典的实例: var someDict:[Int:String] = [1:”One”, 2:”Two”, 3:”Three”] 访问字典 我们可以根据字典的索引来访问数组的元素,语法如下: var someVar = someDict[key] 我们可以通过以下实例来学习如何创建,初始化,访问字典: import Cocoa var someDict:[Int:String]…


