Swift细节记录<一>
1.全局变量记录:
import UIKit
class HHTSwitchGlobalData: NSObject {
var isWaiterAutoPop: Bool = true
private(set) var isUseIntegral : Bool = true //是否使用积分抵现
static let shared = HHTSwitchGlobalData()
/// 更新全部开关数据的方法
///
/// - Parameter allSwitchData: 全部开关数据
func update(withSwitchDic dic: JSONDictionary) {
isUseIntegral = Bool.boolValue(dic[ServerConfigKey.prepayUseScore.rawValue])
}
}
2.元祖使用别名:
typealias OrderedDishModelTuple = (potViewModels: [DishViewModel], dishViewModels: [DishViewModel])
typealias JSONDictionary = [String: Any]
public func fetchOrderedPotsAndDishes() -> OrderedDishModelTuple {
let orderedPots = TableManager.shared.orderedDishViewModels.filter { $.dishModel.dishOrderType == .pot }
let orderedDishes = TableManager.shared.orderedDishViewModels.filter { $.dishModel.dishOrderType == .dish }
return (orderedPots, orderedDishes)
}
3.多使用Manager文件管理属性和方法:
多使用枚举,结构体。
Model可以使用结构体定义。
struct PowerModel {
let powerID: String
let powerName: String
let powerCode: String
let powerValue: String
init(withDict dict: JSONDictionary) {
powerID = String.stringValue(dict["powerId"])
powerCode = String.stringValue(dict["powerCode"])
powerName = String.stringValue(dict["powerName"])
powerValue = String.stringValue(dict["powerValue"])
}
}
4.公用的方法使用protocol:
import Foundation
protocol ModelProtocol: NSObjectProtocol {
init(withDict dict: JSONDictionary)
}
class DishTip: NSObject, ModelProtocol{
let tipID: String
required init(withDict dict: JSONDictionary) {
tipID = String.stringValue(dict["id"])
super.init()
}
5.多使用Extension实现公有,多次使用的方法;
6.
服务器IP使用NetConfig.swift文件单独实现,方便和服务器联调和调试;
接口使用一个枚举文件写在一起,方便查看和修改;
import Foundation
//MAKR: - 获取IP地址
class NetConfig {
static var curServerIP: String{
get{
// return HHTServerConfigGlobalData.shared.bindIP return ServerIP.localHost.getIP()
}
}
static let timeInterval =
}
enum ServerIP : String { case localHost = "127.0.0.1:9000" //本地
func getIP() -> String {
return self.rawValue
}
}
7.控制器用Xib创建,代码改变控件值:
@IBOutlet weak var sureBtn: UIButton! {
didSet {
// sureBtn.setTitle("确认发卡", for: .normal)
sureBtn.setTitle("准备读卡,操作过程中请勿拿走卡片...", for: .disabled)
}
}
8.多使用private,在Extension要使用就filePrivate修饰;
多使用??和?;
多使用map,flatMap,filter
let amount = self.moneyTxt.text.flatMap{ Int($) } ??
9.可以在Model中修改值:
struct CardHistoryInfoModel {
var cardNumber: String = ""
var cardType: String = ""
var cardTypeShowName: String {
get {
if cardType == "" {
return "储值卡"
} else if cardType == "" {
return "赠卡"
} else {
return "未知类型"
}
}
}
}
10.方法的跳转可以用Struct写在一起。
class NavigationBarView: UIView {
struct Action {
static let leftButtonClick = #selector(NavigationBarView.leftButtonClick)
static let gotoPersonalCenter = #selector(NavigationBarView.gotoPersonalCenter)
}
}
Swift细节记录<一>的更多相关文章
- SpringMVC中的session用法及细节记录
前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2 ...
- Swift 错误记录
最近几天开始学习Swift,作为一个从 OC 转到 Swift 的程序员,我一直以为很简单.但是现在学习一个星期之后,发现问题还是蛮多的! 最大的问题就是 太特么 不习惯了!!!!!!!!!! 好吧, ...
- java优化细节记录
此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...
- 数位dp好题整理+自己wa过的细节记录
花(fa)神的数论题 三倍经验:烦人的数学作业 windy数 手机号码 同类分布(博客先鸽着) 板子固然好,细节无限多. 花式wa题法,警示后来人. 1.手残害人不浅 (蒟蒻的我掉坑里不止一次) 2. ...
- iTOL进化树调图细节记录
目录 1. 注册 2. 去枝长 3. 加图例 4. 无根树颜色 5. 导出图片 iTOL基本用法已经会了,之前记录过一点:系统发育(进化)树绘制小结.最近重用,调图时又发现了些细节,记录下备忘. 1. ...
- swift -- 学习记录
先把疯狂的swift这本书大致看了一遍 2016.7.13 因为实在是太闲,所以决定把公司的应用用swift写一遍 然后顺便看看swift的官方文档 这里有一个官文的中文翻译,感动啊 http://w ...
- Swift 细节
1.swift ?和 !的区别 1.1 Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使 ...
- ios swift 知识点记录
1. 定义变量 var name = "***" 定义常量 let name ="*****" 2. swift 变量类型 String, Int, Fl ...
- 【比较基因组】McScan jcvi比较两个基因组共线性细节记录
目录 软件的安装 基因组的准备 一些细节 建议和示例 软件的安装 Python版McScan(jcvi工具包):https://github.com/tanghaibao/jcvi 以前只有pytho ...
随机推荐
- web实现大文件上传分片上传断点续传
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...
- kubefuse 让Kubernetes 资源成为fuse 文件系统
kubefuse 是基于fuse 开发的文件系统,我们可以像访问文件系统一样访问Kubernetes 资源,使用python开发 支持以下特性: 可以使用方便的linux tools: ls. vim ...
- 二维$MLE$线段树
关于二维线段树,ta死了 先来看看两种二维线段树的打法 1.四叉树 然而ta死了,ta是$\Theta (n)$的,加上线段树的常数,$T$飞稳 2.线段树套线段树 我尽量画出来... 图中每个方块是 ...
- NOIP前做题记录
鉴于某些原因(主要是懒)就不一题一题写了,代码直接去\(OJ\)上看吧 CodeChef Making Change 传送门 完全没看懂题解在讲什么(一定是因为题解公式打崩的原因才不是曲明英语太差呢- ...
- SQL中查询现有未释放连接
SELECT dbid,count() FROM [Master].[dbo].[SYSPROCESSES] WHERE spid> and status='sleeping' group by ...
- python mongo存在插入不存在更新,同时指定如果不存在才插入的字段
python爬虫的任务数据操作的小技巧 好久没写公众号了,最近太忙了,这里就不多说了.直接根据需求上代码,我想这个应该是大家比较喜欢的, 需求 爬取某网站的项目列表页,获取其url,标题等信息,作为后 ...
- JavaWeb之Tomcat(1) —— Tomcat的目录结构
1. bin 文件夹 存放Tomcat的可执行文件 (1) startup.bat 文件,启动Tomcat服务的批处理文件. (2) shutdown.bat 文件,结束Tomcat服务的批处理文件. ...
- 简要介绍 X Window System (又称为X11 or X)
X11是一个应用程序,而不是一个操作系统,主要功能是提供图形界面,实现架构和网络架构相同,有X Client和X Server组件,另外还有Window Manager和Display Manager ...
- 登录科普(一)CAS与Oauth
https://www.jianshu.com/p/18aedcaf47f2 CAS的单点登录,资源都在客户端这边,不在CAS的服务器那一方. 用户在给CAS服务端提供了用户名密码后,作为CAS客户端 ...
- Java 面向对象(十五)
Lambda表达式 1. 函数式编程思想概述 在数学中,函数就是有输入量.输出量的一套计算方案,也就是"拿什么东西做什么事情".相对而言,面向对象过分强调"必须通过对象的 ...