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 ...
随机推荐
- LightOJ-1275-Internet Service Providers(数学)
链接: https://vjudge.net/problem/LightOJ-1275 题意: A group of N Internet Service Provider companies (IS ...
- [Svelte 3] Use Svelte 3 transitions to gracefully show and hide DOM elements
Most websites are quite static and adding some animations/transitions can improve the user experienc ...
- javaweb学习笔记(三)
一.javaweb高级(Filter和Listener)的简单介绍 1.过滤器Filter (https://www.cnblogs.com/vanl/p/5742501.html) ①定义 Filt ...
- bzoj 1072: [SCOI2007]排列perm 状压dp
code: #include <bits/stdc++.h> #define N 1005 using namespace std; void setIO(string s) { stri ...
- WinDbg常用命令系列---查看线程调用栈命令K*简介
Windbg里的K*命令显示给定线程的堆栈帧以及相关信息,对于我们调试时,进行调用栈回溯有很大的帮助. 一.K*命令使用方式 在不同平台上,K*命令的使用组合如下 User-Mode, x86 Pro ...
- Android精通教程-Android入门简介
前言 大家好,我是 Vic,今天给大家带来Android精通教程-Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease ...
- Ceilometer和Gnocchi的监控架构解析
1 采集模块整体架构 采集模块主要分为三大块. Ceilometer:用于采集数据并处理数据后发送到gnocchi服务去存储 Gnocchi:用于将采集数据进行计算合并和存储并提供rest api方 ...
- ubuntu之路——day9.2 Covariate shift问题和Batch Norm的解决方案
Batch Norm的意义:Covariate shift的问题 在传统的机器学习中,我们通常会认为source domain和target domain的分布是一致的,也就是说,训练数据和测试数据是 ...
- Java8 拼接字符串 StringJoiner
StringJoiner1.简单的字符串拼接 输出:HelloWorld 注:当我们使用StringJoiner(CharSequence delimiter)初始化一个StringJoiner的时候 ...
- SpringBoot访问不了JSP但却能进入后台
博主在使用sring-boot跳转HTML页面后,由于好奇心就想跳转到JSP页面,就在网上搜相关信息,结果不是跳转500错误就是下载JSP文件.各种坑啊,在博主跳了N多坑后,终于跳转JSP页面成功.故 ...