zoukankan      html  css  js  c++  java
  • 数据模型Model(I)

    枚举、结构体和协议组成Model

      1 //定义一个协议
      2 protocol BaseItemProtocal {
      3     var title: String { get set } //属性是可读可写的
      4     var type: CriteriaType { get set }
      5 }
      6 
      7 struct FilterCondition {
      8     var title: String
      9     var items: [BaseItemProtocal]
     10 }
     11 
     12 struct BaseNumberItem: BaseItemProtocal {
     13     var title: String
     14     var type: CriteriaType
     15     var valueNumber: Int
     16 }
     17 
     18 struct BaseRangeItem: BaseItemProtocal {
     19     var title: String
     20     var type: CriteriaType
     21     var valueRange: NSRange
     22 }
     23 
     24 enum CriteriaType {
     25     case DiabetesType             //糖尿病类型
     26     case Age                      //年龄
     27     case DiagnosisYears           //糖龄
     28     case HsLevel                  //会员类型
     29     case ReportStatus             //血糖报告
     30     
     31     func title() -> String {
     32         switch self {
     33         case .DiabetesType:      return "糖尿病类型"
     34         case .Age:               return "年龄"
     35         case .DiagnosisYears:    return "糖龄(年)"
     36         case .HsLevel:           return "会员类型"
     37         case .ReportStatus:      return "血糖报告"
     38         }
     39 }
     40     
     41     
     42     func subTitles() -> [String] {
     43         switch self {
     44         case .DiabetesType:      return ["一型", "二型", "妊娠", "其他"]
     45         case .Age:               return ["0-20", "21-40", "41-60", "61-80", "80以上"]
     46         case .DiagnosisYears:    return ["0-5", "6-10", "11-15", "16-20", "21-25", "26-30", "30以上"]
     47         case .HsLevel:           return ["银卡", "金卡", "白金卡", "钻石卡", "非会员"]
     48         case .ReportStatus:      return ["已生成", "未生成"]
     49         }
     50     }
     51     
     52     
     53     func items() -> [BaseItemProtocal] {
     54         switch self {
     55         case .DiabetesType:
     56             return [BaseNumberItem(title: "一型", type: .DiabetesType, valueNumber: 1),
     57                     BaseNumberItem(title: "二型", type: .DiabetesType, valueNumber: 2),
     58                     BaseNumberItem(title: "妊娠", type: .DiabetesType, valueNumber: 3),
     59                     BaseNumberItem(title: "其他", type: .DiabetesType, valueNumber: 4)]
     60         case .Age:
     61             return [BaseRangeItem(title: "0-20",  type: .Age, valueRange: NSMakeRange(0, 20)),
     62                     BaseRangeItem(title: "21-40", type: .Age, valueRange: NSMakeRange(21, 40)),
     63                     BaseRangeItem(title: "41-60", type: .Age, valueRange: NSMakeRange(41, 60)),
     64                     BaseRangeItem(title: "61-80", type: .Age, valueRange: NSMakeRange(61, 80)),
     65                     BaseRangeItem(title: "80以上", type: .Age, valueRange: NSMakeRange(81, Int.max))]
     66         case .DiagnosisYears:
     67             return [BaseRangeItem(title: "0-5",   type: .DiagnosisYears, valueRange: NSMakeRange(0, 5)),
     68                     BaseRangeItem(title: "6-10",  type: .DiagnosisYears, valueRange: NSMakeRange(6, 10)),
     69                     BaseRangeItem(title: "11-15", type: .DiagnosisYears, valueRange: NSMakeRange(11, 15)),
     70                     BaseRangeItem(title: "16-20", type: .DiagnosisYears, valueRange: NSMakeRange(16, 20)),
     71                     BaseRangeItem(title: "21-25", type: .DiagnosisYears, valueRange: NSMakeRange(21, 25)),
     72                     BaseRangeItem(title: "26-30", type: .DiagnosisYears, valueRange: NSMakeRange(26, 30)),
     73                     BaseRangeItem(title: "30以上", type: .DiagnosisYears, valueRange: NSMakeRange(31, Int.max))]
     74         case .HsLevel:
     75             return [BaseNumberItem(title: "银卡",  type: .HsLevel, valueNumber: 1),
     76                     BaseNumberItem(title: "金卡",  type: .HsLevel, valueNumber: 2),
     77                     BaseNumberItem(title: "白金卡", type: .HsLevel, valueNumber: 3),
     78                     BaseNumberItem(title: "钻石卡", type: .HsLevel, valueNumber: 4),
     79                     BaseNumberItem(title: "非会员", type: .HsLevel, valueNumber: 0)]
     80         case .ReportStatus:
     81             return [BaseNumberItem(title: "已生成", type: .ReportStatus, valueNumber: 1),
     82                     BaseNumberItem(title: "未生成", type: .ReportStatus, valueNumber: 0)]
     83         }
     84     }
     85 }
     86 
     87 
     88 
     89 
     90 
     91 
     92 
     93 
     94 //使用
     95 let title = CriteriaType.DiabetesType.title()
     96 print("---------->枚举:(title)")
     97         
     98 let items = CriteriaType.DiabetesType.items()
     99         
    100 print("----------------->枚举数组:(items)")
    View Code

    打印结果:

    ---------->枚举:糖尿病类型

    ----------------->枚举数组:[SwiftTest.BaseNumberItem(title: "一型", type: SwiftTest.CriteriaType.DiabetesType, valueNumber: 1), SwiftTest.BaseNumberItem(title: "二型", type: SwiftTest.CriteriaType.DiabetesType, valueNumber: 2), SwiftTest.BaseNumberItem(title: "妊娠", type: SwiftTest.CriteriaType.DiabetesType, valueNumber: 3), SwiftTest.BaseNumberItem(title: "其他", type: SwiftTest.CriteriaType.DiabetesType, valueNumber: 4)]

  • 相关阅读:
    Reddit 转载 Drunk Post: Things I've learned as a Sr Engineer
    算法28 30 二叉树非递归遍历(前中后)
    C++ 子类构造函数初始化列表与基类关系
    算法31 leetcode102 二叉树的层序遍历
    C++由数组构建二叉树指针
    windows下编译源代码安装软件
    算法27 leetcode101 对称二叉树
    算法31 88. 合并两个有序数组
    c++:const修饰指针
    c++ 正则实现 千分位分割
  • 原文地址:https://www.cnblogs.com/EchoHG/p/9064766.html
Copyright © 2011-2022 走看看