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 ...
随机推荐
- HDU - 3709 - Balanced Number(数位DP)
链接: https://vjudge.net/problem/HDU-3709 题意: A balanced number is a non-negative integer that can be ...
- 配置Sublime,为了Python
E:\Sublime Text 3\Data\Packages\User\untitled.sublime-build { "cmd": ["C:\Program Fil ...
- Tensorflow细节-P194-组合训练数据
import tensorflow as tf files = tf.train.match_filenames_once("data.tfrecords-*") filename ...
- php 数组的计算
数组是我们最常用到的类型,那如何计算某个一维数组的个数呢.其实我们可以用到我们之前学过的数学函数里面的一个:count(). 我们来看看count函数的用法: int count ( mixed $变 ...
- Oracle instr() 字符查找函数
instr()函数的格式 (俗称:字符查找函数) 格式一:instr( string1, string2 ) / instr(源字符串, 目标字符串) 格式二:instr( string1 ...
- cf 1037D BFS
$des$一个 n 个点 m 条边的无向连通图从 1 号点开始 bfs,可能得到的 bfs 序有很多,取决于出边的访问顺序.现在给出一个 1 到 n 的排列,判断是否可能是一个 bfs 序. $sol ...
- c++和cuda混合编程 实现传统神经网络
直接放代码了... 实现的是x1+x2=y的预测,但梯度下降很慢...233333,gpu运行时间很快!! // // main.cpp // bp // // Created by jzc on 2 ...
- jmeter之timer --笔记一
简介:测试过程中需要用到time进行造数据测试,需要各种年月日,或者未来时间,就像python中的time和datetime 1.jmeter中timer,使用—time()函数 1.1 timeSh ...
- Dns的作用
DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 DNS系统:通过 ...
- Connection: close
在http1.1中request和reponse header中都有可能出现一个connection头字段,此header的含义是当client和server通信时对于长链接如何进行处理. 在http ...