枚举、结构体和协议组成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. pillow与numpy实现图片素描化

    from PIL import Image import numpy as np #封装一个图像处理类 class TestNumpy(object): def photo2paint(self,im ...

  2. 【Python全栈-HTML】HTML如何做出分割线效果

    参考: https://blog.csdn.net/weixin_39198406/article/details/78827671 一.普通效果 <hr> <hr align=ce ...

  3. 坦克大战java版

    吃了可以加血的血块类 import java.awt.*; public class Blood { //血块移动的路径 int[][] pos = { {450,250},{450,252},{45 ...

  4. 20171123初学demo爬去网页资料

    一.工具vs2015 +python3.5 import urllib.request import urllib.error import re def getcontent(url,page): ...

  5. shell进阶函数

    函数的定义和用途 函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程. 函数和shell程序的异同点 它与shell程序形式上是相似的,不同的是它不是一个单 ...

  6. 前端框架之Vue(3)-计算属性

    计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> {{ ...

  7. C++的函数功能总结

    1. string中find()返回值是字母在母串中的位置(下标记录),如果没有找到,返回npos. 2.string的substr(pos=0, count=npos)返回字符串[pos, pos+ ...

  8. Centos7安装Openvpn

    前言 搭建openvpn主要参考这篇博客,原文传送: http://www.jianshu.com/p/4bbf946222d5 所以你会发现步骤基本一样. 安装openvpn A:安装EPEL仓库 ...

  9. maxcompute笔记

    maxcompute安装和配置 https://help.aliyun.com/document_detail/27804.html?spm=a2c4g.11174283.3.5.566a590e0P ...

  10. github pages搭建网站(三)

    一.个人站点 访问 https://用户名.github.io 搭建步骤 (1)创建个人站点 ->新建仓库(注:仓库名必须是[用户名.github.io]) (2)在仓库下新建index.htm ...