Swift讲解专题五——集合类型(三)

简介: Swift讲解专题五——集合类型

Swift采用这样的设计思路也有其一定的优化道理,我比较了一下,给大家举一个最简单的例子,在使用Objective-C进行iOS开发时,经常会遇到这样的情况,某个控件中有一个UILabel控件,开发者在不想将控件暴漏在.h文件中的情况下经常会声明一个NSString类型的变量,重写此变量的set方法来完成对UILabel控件的赋值,仔细想来,实际上声明的这个NSString变量完全是多余的,它只是为了用来做中间值得传递,Swift的set和get方法就在这里进行了优化。另外,在set方法中会自动生成一个命名为newValue的变量作为传递进来的值,开发者也可以自定义这个变量的名称,在set后加小括号即可,示例如下:


var privateCount:Int{

       get{

           return count;

       }

       set(myValue) {

          count=myValue+100

       }

   }

       Swift中也提供了监听属性赋值过程的方法,其使用的是willSet与didSet机制,示例如下:


class MyClass {

   var count:Int{

       //赋值前执行(除了第一次初始赋值) 将要赋值的值以newValue传入

       willSet{

           print("will set \(newValue)")

       }

       //赋值后执行(除了第一次初始赋值) 原来的值以oldValue传入

       didSet{

          print("did set \(oldValue)")

       }

   }

   let name = "珲少"

   func run() {

       print("run 100 miter")

   }

   init(){

       count=200

   }

}

九、枚举和结构体


       Swift中的枚举和C与Objective-C有很大的差别,在Swift中,枚举也被作为一种数据类型来处理,其中可以添加函数方法。最基本的枚举用法如下所示:


//枚举可以多个case并列 也可以写在一个case中以逗号分隔

enum MyEnum {

   case one

   case tew

   case three

   case Fir,Sec,Thr

}

var em = MyEnum.one

如果变量是类型确定的枚举,在赋值时可以省略枚举名,示例如下:


var em:MyEnum = .one

Swift中的枚举还有一个原始值的概念,要使用原始值,必须在创建枚举类型时设置原始值的类型,示例如下:


enum MyEnum:Int {

   case one=1

   case tew

   case three

   case Fir,Sec,Thr

}

var em = MyEnum.one.rawValue

如果原始值是Int类型,则默认从0开始依次递增,开发者也可以手动设置每个枚举值的原始值。同样,也支持使用原始值来创建枚举实例,如下:


var em = MyEnum(rawValue:1)

通过原始值实例的枚举对象实际上回返回一个optional类型的值,如果传入的原始值参数不能匹配到任何一个枚举case,则可以使用if let结构进行判断处理。


       在枚举中封装方法示例如下:


enum MyEnum:Int {

   case one

   case tew

   case three

   case Fir,Sec,Thr

   func des() {

       switch self {

       case .one:

           print("one")

       default:

           print("else")

       }

   }

}

var em = MyEnum(rawValue:1)

em?.des()

       Swift中的枚举也可以添加附加值,在switch语句中取到对应的枚举类型后,可以获取开发者设置的附加值进行逻辑处理,示例如下:


enum MyEnum {

//为这个类型天啊及一组附加值

   case one(String,Int)

   case tew

   case three

   case Fir,Sec,Thr

   func des() {

       switch self {

       case .one:

           print("one")

       default:

           print("else")

       }

   }

}

var em = MyEnum.one("第一个元素", 1)

switch em {

//前面的let指定附加值为常量 或者用var指定为变量,括号内为附加值参数名

case let .one(param1, param2):

   print("One param is  \(param1) and two param is  \(param2).")

default:

   print("else")

}

       Swift中使用struct关键字来进行结构体的创建,结构体的功能和类相似,支持属性与方法,但不同的是,结构体在传递时会被赋值,类的实例则会以引用的方式传递。

目录
相关文章
|
8月前
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
95 6
|
8月前
|
存储 Swift iOS开发
在Swift编程语言中,集合类型`Set`
在Swift编程语言中,集合类型`Set`
64 2
|
8月前
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
99 1
|
存储 Swift C++
41 Swift不透明类型
Swift不透明类型
55 0
|
2月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
33 2
|
2月前
|
Swift 索引 容器
Swift 泛型-扩展泛型类型
Swift 泛型-扩展泛型类型
35 2
|
2月前
|
Swift 索引
Swift 泛型-类型约束
Swift 泛型-类型约束
31 1
|
2月前
|
安全 Swift iOS开发
Swift 可选(Optionals)类型
10月更文挑战第24天
39 2
|
8月前
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
75 1
|
8月前
|
安全 Swift
【Swift开发专栏】Swift中的可选类型与解包
【4月更文挑战第30天】Swift的可选类型(Optional)用于表示变量可能无值,如用户未填写表单或空服务器数据。可选类型用问号(?)标记,状态可为包含值或nil。解包包括强制解包(!,可能触发运行时错误)、可选绑定(在if/while中安全解包)和隐式解包(声明时带!,使用时不需显式解包)。高级用法包括可选链式调用、空合并操作符(??)和可选类型比较。理解并恰当使用这些概念能提升代码的健壮性和安全性。
76 1