枚举、结构体和协议组成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. java JDBC (七) org.apache.commons.dbutils 查询

    package cn.sasa.demo1; import java.sql.Connection; import java.sql.SQLException; import java.util.Li ...

  2. 【PyQt5-Qt Designer】界面布局

    PyQt5 界面布局详谈 箱式布局 QHBoxLayout和QVBoxLayout是基本的布局类,它们在水平和垂直方向上排列小部件 效果图: from PyQt5.QtCore import Qt f ...

  3. Automation服务器不能创建对象(金税盘)

    1. 安装防伪开票组件接口软件: 2. 把接口的注册文件放到%防伪开票系统的安装目录% \BIN下 3. 把%防伪开票系统的安装目录%\bin下的TaxCardX.dll文件复制至 c:\window ...

  4. uarts裸机程序

    硬件平台:JZ2440 实现功能:向串口软件实现输出putchar函数 start.s   --> 设置堆栈,关闭看门狗,初始化时钟,初始化sdram init.c      -->初始化 ...

  5. oracle查看哪些表被锁

    select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where a ...

  6. MySQL前缀索引和索引选择性

    有时候需要索引很长的字符列,这会让索引变得大且慢.通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率.但这样也会降低索引的选择性.索引的选择性是指不重复的索引值(也称为基数,car ...

  7. Linux下搭建redis服务器

    1.redis需要gcc的编译环境,在线安装gcc:#  yum install gcc-c++ 2.上传redis的压缩包到Linux系统,解压 3.进入源码目录,编译(注意要有makefile), ...

  8. 《全栈性能Jmeter》-3JMeter体系结构

  9. 【转】JsonPath教程

    https://blog.csdn.net/koflance/article/details/63262484 1. 介绍 类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检 ...

  10. SEO--质量监测

    日志分析 1.每个搜索引擎的总体抓取量 2.记录搜索引擎蜘蛛的不重复抓取量 3.每个目录.每个搜索引擎的抓取量 4.统计搜索引擎抓取的状态码(通过查看欧化300,404,500等分析那些页面需要优化) ...