08:swift-枚举
正文
/* 1: ** Swift中的枚举则更加灵活,每一个枚举成员可以是字符串、字符、任意的整数值,或者是浮点类型。 2: * 一旦变量声明成枚举类型,你就可以用一个点语法 来访问枚举的值。 3: Swift 中的枚举是具有自己权限的一类类型。它们使用了许多一般只被类所支持的特性,例如计算属性用来提供关于枚举当前值的额外信息,并且实例方法用来提供与枚举表示的值相关的功能。枚举同样也能够定义初始化器来初始化成员值;而且能够遵循协议来提供标准功能。 4: *遍历枚举情况(case) .allCases 5: *** 关联值 6: 原始值 7: *** 隐式指定的原始值 7.1: 当整数值被用于作为原始值时,每成员的隐式值都比前一个大一。 如果第一个成员没有值,那么它的值是 0 。 7.2: 当字符串被用于原始值,那么每一个成员的隐式原始值则是那个成员的名称。 7.3: 你可以用 rawValue属性来访问一个枚举成员的原始值: let sunsetDirection = CompassPoint.west.rawValue 7.4: 初始化枚举 8: ** 递归枚举 */ enum CompassPoint: String, CaseIterable { case north case south case east case west } import UIKit class EightEnumVC: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = .white self.title = "8:枚举" testEnumCase() forAllCase() visitRawValue() initEnumCase() } // 1: 枚举的定义 private func testEnumCase() { print("枚举的定义") let direction: CompassPoint = .east switch direction { case .north: print(direction, direction.self) case .south: print(direction, direction.self) case .east: print(direction, direction.self) case .west: print(direction, direction.self) } } // 2:枚举的遍历 CaseIterable ,使用.allCase 需要实现CaseIterable协议 private func forAllCase() { print("枚举的遍历") for direction in CompassPoint.allCases { print(direction) } } // 3: 访问原始值 private func visitRawValue() { print("访问原始值:" + CompassPoint.east.rawValue) } // 4: 初始化一个枚举变量 private func initEnumCase() { let eastCase = CompassPoint(rawValue: "east") if let east = eastCase { print("初始化成功:\(east)") } else { print("初始化失败") } } }