你的位置:首页 > 操作系统

[操作系统]Swift优雅的实现枚举的定义及使用


1、枚举是用来表示值的“类型”。


2、定义枚举类型“FamilyRelationshipType”

enum FamilyRelationshipType {  case GrandFather  case GrandMother  case Father  case Mother  case Brother  case Sister  case Son  case Daughter}

3、使用枚举,指定该成员与其他成员的关系:

struct FamilyMember {  var name: String  var relationshipType: FamilyRelationshipType    init(name: String, relationshipType: FamilyRelationshipType) {    self.name = name    self.relationshipType = relationshipType  }}let sister = FamilyMember(name: "Jacky", relationshipType: FamilyRelationshipType.Sister)let brother = FamilyMember(name: "Jack", relationshipType: FamilyRelationshipType

4、指定值定义枚举:

enum FamilyRelationshipType: Int {  case GrandFather = 400  case GrandMother = 500  case Father = 600  case Mother = 700  case Brother = 800  case Sister = 900  case Son = 1000  case Daugther = 1100}

5、Switch中使用枚举实例:

static func giftFor(member: FamilyMember) -> String {  switch (member.relationshipType) {  case .GrandFather:    return "Book"  case .GrandMother:    return "Sweater"  case .Father:    return "Shirt"  case .Mother:    return "Flowers"  default:    return "Choclates"  }}

6、Swift 中把每个枚举与它的值联合起来。

enum FamilyRelationshipType {  case GrandFather(age: Int)  case GrandMother(age: Int)  case Father(age: Int)  case Mother(age: Int)  case Husband(age: Int)  case Wife(age: Int)  case Brother(age: Int)  case Sister(age: Int)  case Son(age: Int)  case Daugther(age: Int)}

完整实例,根据家庭成员的年龄大小来决定具体的礼物:

enum FamilyRelationshipType {  case GrandFather(age: Int)  case GrandMother(age: Int)  case Father(age: Int)  case Mother(age: Int)  case Husband(age: Int)  case Wife(age: Int)  case Brother(age: Int)  case Sister(age: Int)  case Son(age: Int)  case Daugther(age: Int)    func gift() -> String {    switch(self) {    case .Brother(let age):      if age > 10 {        return "video games"      } else {        return "toys"      }    case .GrandFather:      return "Book"    case .GrandMother:      return "Sweater"    case .Father:      return "Shirt"    case .Mother:      return "Flowers"    default:      return "Choclates"    }  }}struct FamilyMember {  var name: String  var relationshipType: FamilyRelationshipType    init(name: String, relationshipType: FamilyRelationshipType) {    self.name = name    self.relationshipType = relationshipType  }}

至此完整的Swift下的枚举定义使用完成,顺便推荐一下个人ios开发小站http://www.iosask.com