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细节记录<一>的更多相关文章

  1. SpringMVC中的session用法及细节记录

    前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2 ...

  2. Swift 错误记录

    最近几天开始学习Swift,作为一个从 OC 转到 Swift 的程序员,我一直以为很简单.但是现在学习一个星期之后,发现问题还是蛮多的! 最大的问题就是 太特么 不习惯了!!!!!!!!!! 好吧, ...

  3. java优化细节记录

    此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...

  4. 数位dp好题整理+自己wa过的细节记录

    花(fa)神的数论题 三倍经验:烦人的数学作业 windy数 手机号码 同类分布(博客先鸽着) 板子固然好,细节无限多. 花式wa题法,警示后来人. 1.手残害人不浅 (蒟蒻的我掉坑里不止一次) 2. ...

  5. iTOL进化树调图细节记录

    目录 1. 注册 2. 去枝长 3. 加图例 4. 无根树颜色 5. 导出图片 iTOL基本用法已经会了,之前记录过一点:系统发育(进化)树绘制小结.最近重用,调图时又发现了些细节,记录下备忘. 1. ...

  6. swift -- 学习记录

    先把疯狂的swift这本书大致看了一遍 2016.7.13 因为实在是太闲,所以决定把公司的应用用swift写一遍 然后顺便看看swift的官方文档 这里有一个官文的中文翻译,感动啊 http://w ...

  7. Swift 细节

    1.swift ?和 !的区别 1.1 Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使 ...

  8. ios swift 知识点记录

      1. 定义变量 var name = "***" 定义常量 let name ="*****" 2. swift 变量类型  String, Int, Fl ...

  9. 【比较基因组】McScan jcvi比较两个基因组共线性细节记录

    目录 软件的安装 基因组的准备 一些细节 建议和示例 软件的安装 Python版McScan(jcvi工具包):https://github.com/tanghaibao/jcvi 以前只有pytho ...

随机推荐

  1. Dobbox

    一.向本地仓库导入Dubbox依赖 1.1解压压缩包 1.2打开cmd窗口切到源码包路径 1.3输入命令行 1.4成功后展示如图 1.5输入命令行 1.6成功后如图 public class DoSo ...

  2. Arrays.asList 存在的坑

    引语: 阿里巴巴java开发规范说到使用工具类Arrays.asList()方法把数组转换成集合时,不能使用其修改集合相关的方法,它的add/remove/clear方法会抛出UnsupportedO ...

  3. OFDM为什么要在频域内插后做fftshift

     目的:“便于”演算和分析  方法:转换成负频率,得到零中频. 注意:Matlab下标从1开始,数字信号处理下标从0开始,因此以下作图做了转换.

  4. tcp三次握手和四次握手的理解

    三次握手:发生在建立tcp的时候 1.客户端:发送一个syn包给服务端(同步) 2.服务端:发送一个ack包再加一个syn包给客户端(应答+同步) 3.客户端:发送一个ack包给服务端(应答) 四次握 ...

  5. MySQL Create table as / Create table like

    a.create table like方式会完整地克隆表结构,但不会插入数据,需要单独使用insert into或load data方式加载数据 b.create table as  方式会部分克隆表 ...

  6. C 指针常量 和常量指针 指向常量的指针常量的使用

    #include <stdio.h> /* 指针常量 和常量指针 指向常量的指针常量 */ int main() { int a = 100; int b =200; int* const ...

  7. android studio 使用第三方模拟器连接方法

    安装完模拟器后,要使用adb命令Android studio才能识别出来: 打开cmd,输入:adb connect 127.0.0.1:26944.如下: 海马玩模拟器的端口号是26944. 逍遥安 ...

  8. css+vue实现流程图

    主要用css+flex布局实现样式部分,vue实现组件逻辑.首先看下效果吧: 当空间不够时还可以使用拖拽功能 接下来说明下实现思路 1.首先是实现单个节点样式,这个很简单不谈了,节点后都跟有一小段连接 ...

  9. archlinux安装nvidia-1050ti闭源驱动教程,亲测

    link:https://blog.csdn.net/u014025444/article/details/91454059

  10. Linux文件的权限的基本介绍

    一. ls  -l    显示的内容如下: 二.rwx权限详解 1.rwx作用到文件 2. rwx作用在目录 三.文件及目录实际案例 四.修改权限  -  chmod 1. 基本说明: 2.第一种方式 ...