数据模型Model(I)
枚举、结构体和协议组成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)的更多相关文章
- Entity Framework 学习笔记(二)之数据模型 Model 使用过程
Entity Framework 数据模型 Model 创建的使用: 开发环境:VS2012 数据库:SQL Server 2008 Entity Framework 版本:6.12 下面是新建的 ...
- C#:CodeSmith根据数据库中的表创建C#数据模型Model + 因为没有钱买正版,所以附加自己写的小代码
对于C#面向对象的思想,我们习惯于将数据库中的表创建对应的数据模型: 但假如数据表很多时,我们手动增加模型类会显得很浪费时间: 这个时候有些人会用微软提供的EntityFrameWork,这个框架很强 ...
- 数据模型model设置、生成数据迁移文件、执行数据迁移文件
一.model的配置 1.创建数据库 2.安装pymysql 3.修改配置文件 数据库连接配置 DATABASES = {'default': {'ENGINE': 'django.db.backen ...
- springMVC数据模型model,modelmap,map,@ModelAttribute的相互关系
结论: a.注解方法中形参为model,modelmap,map一个或几个时,他们指向的引用对象相同即他们的值相同. b.当使用@ModelAttribute注解请求参数时,springmvc自动将该 ...
- Django 定义数据模型
如何定义数据模型: (1) 在 MVC 设计模式中,M 表示数据模型 ( Model ),负责业务对象与数据库的映射,我们可以通过应用的 models.py 来定义数据模型(2) Model 采用了 ...
- MVC EF Model First
1 在Models下新建实体数据模型Model.edmx 2 在Model.edmx中点右键建立各个实体,增加Scalar Property 3 空白处点右键,添加关系,勾选增加外键 4 保存Mode ...
- MVC4 Model View Controller分离成独立项目
适合人群:了解MVC项目的程序员 开发工具:vs2012 开发语言:C# 小项目或功能比较单一的项目可以直接新建一个MVC基本项目类型即可,但随着需求不断迭代,项目的功能模块越来越多,甚至有些模块可以 ...
- 订单业务楼层化 view管理器和model管理器进行了model和view的全面封装处理 三端不得不在每个业务入口上线时约定好降级开关,于是代码中充满了各种各样的降级开关字段
京东APP订单业务楼层化技术实践解密 原创 杜丹 留成 博侃 京东零售技术 2020-09-29 https://mp.weixin.qq.com/s/2oExMjh70Kyveiwh8wOBVA 用 ...
- iOS开发之多种Cell高度自适应实现方案的UI流畅度分析
本篇博客的主题是关于UI操作流畅度优化的一篇博客,我们以TableView中填充多个根据内容自适应高度的Cell来作为本篇博客的使用场景.当然Cell高度的自适应网上的解决方案是铺天盖地呢,今天我们的 ...
随机推荐
- 递归、嵌套for循环、map集合方式实现树形结构菜单列表查询
有时候, 我们需要用到菜单列表,但是怎么样去实现一个菜单列表的编写呢,这是一重要的问题. 比如我们需要编写一个树形结构的菜单,那么我们可以使用JQuery的zTree插件:http://www.tre ...
- webmin账户重置密码
locate changepass.pl(如果你不常使用locate的话那,先sudo updatedb)找到路径,在/usr/libexec/webmin/下面,转到这个目录下面./changepa ...
- 强制禁用gitlab的双因子认证:Two-Factor Authentication
(一)问题描述: 此博客解决如下问题:禁用gitlab的双因子认证 禁用前,如图(此时,你在gitlab中什么也干不了) (二)思路分析: 百度了很多方法,都不可靠(如不可靠的说明:https://s ...
- dedecms批量修改文章为待审核稿件怎么操作
dedecms批量修改文章为待审核稿件要怎么操作呢?因为我们有时会出于某些原因要把文章暂时先隐藏掉,dedecms有一个比较好的功能是将文件状态设为未审核前台就可以看不到了,那要怎么批量设置呢?到后台 ...
- CGPoint,CGSize,CGRect转NSString以及CGRect的一些便捷实用方法
打印代码小技巧 UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UIKIT_EXTERN NSString *NSStringFr ...
- Error, some other host already uses address 192.168.0.202错误解决方法
Error, some other host already uses address 192.168.0.202错误解决方法 今天配置虚拟机网卡的时候遇到错误:Error, some other h ...
- Python高阶函数map、reduce、filter、sorted的应用
#-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...
- oracle常用分析函数 over(partition by xxx order by xxx)
--over order by 连续累加的意思,把by后面相同的字段,一个组组累加起来SELECT id_,name_,proc_def_id_, count(*) over(order by nam ...
- Nginx中的rewrite指令(break,last,redirect,permanent)
rewite 在server块下,会优先执行rewrite部分,然后才会去匹配location块 server中的rewrite break和last没什么区别,都会去匹配location,所以没必要 ...
- Kubernetes总结
1.Kubernetes简介 在了解Kubernetes之前,我们有必要先简单了解一下传统的运维模式.在传统的项目架构中(单体or微服务),我们一般将项目打包为war或fatJar的方式进行部署. 在 ...