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

 //定义一个协议
protocol BaseItemProtocal {
var title: String { get set } //属性是可读可写的
var type: CriteriaType { get set }
} struct FilterCondition {
var title: String
var items: [BaseItemProtocal]
} struct BaseNumberItem: BaseItemProtocal {
var title: String
var type: CriteriaType
var valueNumber: Int
} struct BaseRangeItem: BaseItemProtocal {
var title: String
var type: CriteriaType
var valueRange: NSRange
} enum CriteriaType {
case DiabetesType //糖尿病类型
case Age //年龄
case DiagnosisYears //糖龄
case HsLevel //会员类型
case ReportStatus //血糖报告 func title() -> String {
switch self {
case .DiabetesType: return "糖尿病类型"
case .Age: return "年龄"
case .DiagnosisYears: return "糖龄(年)"
case .HsLevel: return "会员类型"
case .ReportStatus: return "血糖报告"
}
} func subTitles() -> [String] {
switch self {
case .DiabetesType: return ["一型", "二型", "妊娠", "其他"]
case .Age: return ["0-20", "21-40", "41-60", "61-80", "80以上"]
case .DiagnosisYears: return ["0-5", "6-10", "11-15", "16-20", "21-25", "26-30", "30以上"]
case .HsLevel: return ["银卡", "金卡", "白金卡", "钻石卡", "非会员"]
case .ReportStatus: return ["已生成", "未生成"]
}
} func items() -> [BaseItemProtocal] {
switch self {
case .DiabetesType:
return [BaseNumberItem(title: "一型", type: .DiabetesType, valueNumber: ),
BaseNumberItem(title: "二型", type: .DiabetesType, valueNumber: ),
BaseNumberItem(title: "妊娠", type: .DiabetesType, valueNumber: ),
BaseNumberItem(title: "其他", type: .DiabetesType, valueNumber: )]
case .Age:
return [BaseRangeItem(title: "0-20", type: .Age, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "21-40", type: .Age, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "41-60", type: .Age, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "61-80", type: .Age, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "80以上", type: .Age, valueRange: NSMakeRange(, Int.max))]
case .DiagnosisYears:
return [BaseRangeItem(title: "0-5", type: .DiagnosisYears, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "6-10", type: .DiagnosisYears, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "11-15", type: .DiagnosisYears, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "16-20", type: .DiagnosisYears, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "21-25", type: .DiagnosisYears, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "26-30", type: .DiagnosisYears, valueRange: NSMakeRange(, )),
BaseRangeItem(title: "30以上", type: .DiagnosisYears, valueRange: NSMakeRange(, Int.max))]
case .HsLevel:
return [BaseNumberItem(title: "银卡", type: .HsLevel, valueNumber: ),
BaseNumberItem(title: "金卡", type: .HsLevel, valueNumber: ),
BaseNumberItem(title: "白金卡", type: .HsLevel, valueNumber: ),
BaseNumberItem(title: "钻石卡", type: .HsLevel, valueNumber: ),
BaseNumberItem(title: "非会员", type: .HsLevel, valueNumber: )]
case .ReportStatus:
return [BaseNumberItem(title: "已生成", type: .ReportStatus, valueNumber: ),
BaseNumberItem(title: "未生成", type: .ReportStatus, valueNumber: )]
}
}
} //使用
let title = CriteriaType.DiabetesType.title()
print("---------->枚举:\(title)") let items = CriteriaType.DiabetesType.items() print("----------------->枚举数组:\(items)")

打印结果:

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

----------------->枚举数组:[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)]

数据模型Model(I)的更多相关文章

  1. Entity Framework 学习笔记(二)之数据模型 Model 使用过程

    Entity Framework  数据模型 Model 创建的使用: 开发环境:VS2012 数据库:SQL Server 2008 Entity Framework  版本:6.12 下面是新建的 ...

  2. C#:CodeSmith根据数据库中的表创建C#数据模型Model + 因为没有钱买正版,所以附加自己写的小代码

    对于C#面向对象的思想,我们习惯于将数据库中的表创建对应的数据模型: 但假如数据表很多时,我们手动增加模型类会显得很浪费时间: 这个时候有些人会用微软提供的EntityFrameWork,这个框架很强 ...

  3. 数据模型model设置、生成数据迁移文件、执行数据迁移文件

    一.model的配置 1.创建数据库 2.安装pymysql 3.修改配置文件 数据库连接配置 DATABASES = {'default': {'ENGINE': 'django.db.backen ...

  4. springMVC数据模型model,modelmap,map,@ModelAttribute的相互关系

    结论: a.注解方法中形参为model,modelmap,map一个或几个时,他们指向的引用对象相同即他们的值相同. b.当使用@ModelAttribute注解请求参数时,springmvc自动将该 ...

  5. Django 定义数据模型

    如何定义数据模型: (1) 在 MVC 设计模式中,M 表示数据模型 ( Model ),负责业务对象与数据库的映射,我们可以通过应用的 models.py 来定义数据模型(2) Model 采用了 ...

  6. MVC EF Model First

    1 在Models下新建实体数据模型Model.edmx 2 在Model.edmx中点右键建立各个实体,增加Scalar Property 3 空白处点右键,添加关系,勾选增加外键 4 保存Mode ...

  7. MVC4 Model View Controller分离成独立项目

    适合人群:了解MVC项目的程序员 开发工具:vs2012 开发语言:C# 小项目或功能比较单一的项目可以直接新建一个MVC基本项目类型即可,但随着需求不断迭代,项目的功能模块越来越多,甚至有些模块可以 ...

  8. 订单业务楼层化 view管理器和model管理器进行了model和view的全面封装处理 三端不得不在每个业务入口上线时约定好降级开关,于是代码中充满了各种各样的降级开关字段

    京东APP订单业务楼层化技术实践解密 原创 杜丹 留成 博侃 京东零售技术 2020-09-29 https://mp.weixin.qq.com/s/2oExMjh70Kyveiwh8wOBVA 用 ...

  9. iOS开发之多种Cell高度自适应实现方案的UI流畅度分析

    本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景.当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的 ...

随机推荐

  1. flex布局 响应式布局

    移动端页面开发流程   移动端页面布局 一.移动端app分类 1.Native App原生app手机应用程序 使用原生的语言开发的手机应用,Android系统用的是java,ios系统用的是objec ...

  2. 【Python全栈-HTML】HTML入门

    HTML入门介绍 参考: https://www.bilibili.com/video/av21663728/?p=339 http://www.cnblogs.com/yuanchenqi/arti ...

  3. Python库源码学习1:Flask之app.run

    先列出app.run()实现的功能,我们以debug=True的情况下进行分析. 1. web服务器,处理http请求 2. 当代码修改后,重启服务器 那么app.run()是如何实现这两个功能的呢? ...

  4. winform接收全局的快捷键

    public class NativeWIN32 { public NativeWIN32() { } /* ------- using WIN32 Windows API in a C# appli ...

  5. es6 学习二 Generator

    安装babel的拓展包(Polyfill) ,对Generator的转义 这是一个补完babel支持es6的拓展包,配置步骤为3个: 打开命令行键入 npm install --save-dev ba ...

  6. 第5章 实现windows程序的数据绑定

    1:连接式: command 对象负责对数据库的执行命令 DataReader 对象负责从数据源中读取数据 connection 对象负责链接数据库 断开式: 数据集的Dataset存放在独立的数据源 ...

  7. 3.0-uC/OS-III简介(操作系统结构)

    1.OS-III是一个第 3代的系统内核,支持现代的实时内核所期待的大部分功能. 例如资源管理, 同步, 任务间的通信等等.然而, uC/OS-III提供的特色功能在其它的实时内核中是找不到的, 比如 ...

  8. JAVA四大域对象总结

    根据有作用范围由小到大: page(jsp有效)------>page域指的是pageContext. request(一次请求)--->request域request HttpServl ...

  9. (1)DBA查询:数据库

    1.数据库状态:[1]sys.databases   [2]exec sp_spaceused 2.数据文件状态:[1]sys.master_files [2]查看ldf与mdf:sp_helpfil ...

  10. 微信即将支持App直接打开小程序

    “今年,微信将更快速地支持各APP直接打开小程序.”微信开放平台基础部高级产品经理林兴表示.对于官方即将支持的App直接打开小程序,林兴解释说,正如大家都喜欢微信钱包里的各种便捷服务,以后一个旅游攻略 ...