最新的swift 没有了fromraw方法,该如何获取初始值为x的枚举值

兄弟姐妹,打扰一下,最新的swift 没有了fromraw方法,该如何获取初始值为x的枚举值
最新回答
孤独的王后

2024-06-07 09:50:15

  Swift语言中,具有类特征的类型包括三种,即枚举类型、结构类型(包括基本类型,基本类型实际都是结构类型的特例)、类。其中枚举类型、结构类型是属于值类型,类属于引用类型。三种类型都可以添加属性、方法、下标方法,能够使用扩展进行功能扩展,使用协议等。

  一、 枚举
  枚举定义了一种包含一组相关值的公共类型。枚举是Swift中的一种与类类似的类型,具有许多传统类才有的特征,例如计算属性、实例方法,能够通过扩展或协议增强功能等。
  1.1 枚举定义
  Swift 语言的枚举类型的定义语法如下:
  enum CompassPoint {
  case North
  case South
  case East
  case West
  }
  枚举语法以一个关键字enum来标识,enum后面包含一个枚举类型名字,枚举定义全部放到一对大括号中。
  在枚举中定义的值称为枚举成员值,用case关键字来指示一个新的枚举成员值。
  与C和Objective-C语言的枚举类型不同的是:在Swift中不需要为枚举成员分配一个默认的整数值。
  如果为枚举成员提供值,该值可以是一个字符串、一个字符或者是一个任意整数或浮点数。
  枚举成员值可以定义到一行中,并用逗号分割。
  enum Planet {
  case Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
  }
  每个新定义的枚举都属于一种新的独立的类型。
  1.2 枚举的使用
  可以为一个常量或变量分配一种枚举类型的值,如:
  var directionToHead =CompassPoint.West
  以上定义的变量directionToHead可以推断为是一种CompassPoint类型的枚举变量,因此你可以设置该变量为CompassPoint类型的其它值,如:
  directionToHead = .East //枚举类型被省略

  枚举也能够在switch语句中使用,用来匹配独立的枚举值:
  directionToHead = .South
  switch directionToHead {
  case .North:
  println("Lots of planets have a north")
  case .South:
  println("Watch out for penguins")
  case .East:
  println("Where the sun rises")
  case .West:
  println("Where the skies are blue")
  }
  1.3 为枚举成员分配相关值
  Swift中能够为每一个枚举成员规定一个任意类型的相关值,并且为每个枚举成员规定的相关值的类型可以不同。
  enum Barcode {
  case UPCA(Int,Int,Int)
  case QRCode(String)
  }
  该例子定义了一个类型为Barcode的枚举类型,并定义了两个枚举值UPCA 和QRCode,并可以为枚举值UPCA分配一个多元组类型的相关值,为QRCode分配一个字符串类型的相关值,该例子没有为枚举值本身指定任何类型的值。
  可以使用以上定义的枚举为一个常量或变量赋值,如:
  var productBarcode =Barcode.UPCA(8,85909_51226,3)
  该例子为变量 productBarcode分配了一个Barcode.UPCA枚举值,为其分配的相关的多元组类型的值为(8,85909_51226,3)。
  然后该变量productBarcode可以设置为带字符串类型相关值的另外的一个枚举值:
  productBarcode = .QRCode(“ABCDEFGHIJKLMNOP”)
  还可以在switch语句中使用该枚举,并通过绑定常量或变量的方式引出其带有的相关类型的值:
  switch productBarcode {
  case .UPCA(let numberSystem,let identifier,let check):
  println("UPC-A with value of\(numberSystem),\(identifier),\(check).")
  case .QRCode(let productCode):
  println("QR code with value of\(productCode).")
  }
  如果枚举成员的所有的相关值都作为常量被引出,或者所有的相关值都作为变量形式被引出,以上语法还可以简写为如下形式:
  switch productBarcode {
  case let .UPCA(numberSystem,identifier,check):
  println("UPC-A with value of\(numberSystem),\(identifier),\(check).")
  case let .QRCode(productCode):
  println("QR code with value of\(productCode).")
  }
  1.4 为枚举分配原始值
  除了为枚举成员分配相关的值外,还能为每个枚举成员预分配一个同类型的原始值。这与C 语言为枚举成员分配一个整数值类似,但Swift定义的原始值的类型可以是字符串、字符、或任意的整数或浮点数类型等,如:
  enum ASCIIControlCharacter:Character {
  case Tab ="\t"
  case LineFeed ="\n"
  case CarriageReturn ="\r"
  }