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 ...
随机推荐
- 01-学习vue前的准备工作(let和const)
es6语法:let和const es6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效 <!DOCYTPE html> <ht ...
- MongoDB bindIp 与 bindIpAll
Linux服务器上安装MongoDB后,允许其它客户端IP访问MongoDB服务器.阿里云服务器需要设置入站规则,可参见使用外网访问阿里云服务器ZooKeeper 1.允许所有地址访问 NOTE:ne ...
- mongodb 副本集的主的选举
primary的选举依赖于各个实例的优先权重,默认权重都是1 复本集的主挑选权重最高的,权重一样的无法控制谁为主 设置各个实例的优先权重,挑选自己想要的实例为主,只有primary可以更改权重配置 c ...
- Node.js 自学之旅(初稿篇)
学习基础,JQuery 原生JS有一定基础,有自己一定技术认知(ps:原型链依然迷糊中.闭包6不起来!哎!) 当然最好有语言基础,C#,java,PHP等等.. 最初学习这个东西的原因很简单,在园子里 ...
- 《自制编程语言--基于C语言 郑钢》学习笔记
<自制编程语言>学习笔记 本仓库内容 <自制编程语言>源码 src/sparrow.tgz <自制编程语言>读书笔记 docs/* <自制编程语言>样章 ...
- ZR#1009
ZR#1009 解法: 因为无敌的SR给了一个大暴力算法,所以通过打表发现了了一些神奇的性质,即第一行和第一列的对应位置数值相等. 我们可以通过手算得出 $ F(n) = \frac{n(n + 1) ...
- leaflet使用手册
谷歌地图加载地址: 谷歌交通地图地址:http://www.google.cn/maps/vt/pb=!1m4!1m3!1i{z}!2i{x}!3i{y}!2m3!1e0!2sm!3i38007257 ...
- jquery 遍历对象、数组、集合
<div id="result" style="font-size:16px;color:red;"></div><table c ...
- 第十二周助教工作总结——NWNU李泓毅
助教博客链接:https://www.cnblogs.com/NWNU-LHY/ 本次作业的要求:基于原型的团队项目需求调研与分析:https://www.cnblogs.com/nwnu-daizh ...
- python 椭球面
作者:chaowei wu链接:https://www.zhihu.com/question/266366089/answer/307037017来源:知乎著作权归作者所有.商业转载请联系作者获得授权 ...