1.全局变量记录:

  1. import UIKit
  2.  
  3. class HHTSwitchGlobalData: NSObject {
  4.  
  5. var isWaiterAutoPop: Bool = true
  6.  
  7. private(set) var isUseIntegral : Bool = true //是否使用积分抵现
  8.  
  9. static let shared = HHTSwitchGlobalData()
  10.  
  11. /// 更新全部开关数据的方法
  12. ///
  13. /// - Parameter allSwitchData: 全部开关数据
  14. func update(withSwitchDic dic: JSONDictionary) {
  15.  
  16. isUseIntegral = Bool.boolValue(dic[ServerConfigKey.prepayUseScore.rawValue])
  17. }
  18.  
  19. }

2.元祖使用别名:

  1. typealias OrderedDishModelTuple = (potViewModels: [DishViewModel], dishViewModels: [DishViewModel])

typealias JSONDictionary = [String: Any]

  1. public func fetchOrderedPotsAndDishes() -> OrderedDishModelTuple {
  2. let orderedPots = TableManager.shared.orderedDishViewModels.filter { $.dishModel.dishOrderType == .pot }
  3. let orderedDishes = TableManager.shared.orderedDishViewModels.filter { $.dishModel.dishOrderType == .dish }
  4. return (orderedPots, orderedDishes)
  5. }

3.多使用Manager文件管理属性和方法:

多使用枚举,结构体。

Model可以使用结构体定义。

  1. struct PowerModel {
  2. let powerID: String
  3. let powerName: String
  4. let powerCode: String
  5. let powerValue: String
  6. init(withDict dict: JSONDictionary) {
  7. powerID = String.stringValue(dict["powerId"])
  8. powerCode = String.stringValue(dict["powerCode"])
  9. powerName = String.stringValue(dict["powerName"])
  10. powerValue = String.stringValue(dict["powerValue"])
  11. }
  12. }

4.公用的方法使用protocol:

  1. import Foundation
  2.  
  3. protocol ModelProtocol: NSObjectProtocol {
  4. init(withDict dict: JSONDictionary)
  5. }
  1. class DishTip: NSObject, ModelProtocol{
  2.  
  3. let tipID: String
  4.  
  5. required init(withDict dict: JSONDictionary) {
  6. tipID = String.stringValue(dict["id"])
  7.  
  8. super.init()
  9. }

5.多使用Extension实现公有,多次使用的方法;

6.

服务器IP使用NetConfig.swift文件单独实现,方便和服务器联调和调试;

接口使用一个枚举文件写在一起,方便查看和修改;

  1. import Foundation
  2. //MAKR: - 获取IP地址
  3. class NetConfig {
  4. static var curServerIP: String{
  5. get{
  6. // return HHTServerConfigGlobalData.shared.bindIP
  7.  
  8. return ServerIP.localHost.getIP()
  9. }
  10. }
  11. static let timeInterval =
  12. }
  13. enum ServerIP : String {
  14.  
  15. case localHost = "127.0.0.1:9000" //本地
  16. func getIP() -> String {
  17. return self.rawValue
  18. }
  19. }

7.控制器用Xib创建,代码改变控件值:

  1. @IBOutlet weak var sureBtn: UIButton! {
  2. didSet {
  3. // sureBtn.setTitle("确认发卡", for: .normal)
  4. sureBtn.setTitle("准备读卡,操作过程中请勿拿走卡片...", for: .disabled)
  5. }
  6. }

8.多使用private,在Extension要使用就filePrivate修饰;

   多使用??和?;

   多使用map,flatMap,filter

  1. let amount = self.moneyTxt.text.flatMap{ Int($) } ??

9.可以在Model中修改值:

  1. struct CardHistoryInfoModel {
  2. var cardNumber: String = ""
  3. var cardType: String = ""
  4. var cardTypeShowName: String {
  5. get {
  6. if cardType == "" {
  7. return "储值卡"
  8. } else if cardType == "" {
  9. return "赠卡"
  10. } else {
  11. return "未知类型"
  12. }
  13. }
  14. }
  15. }

10.方法的跳转可以用Struct写在一起。

  1. class NavigationBarView: UIView {
  2.  
  3. struct Action {
  4. static let leftButtonClick = #selector(NavigationBarView.leftButtonClick)
  5. static let gotoPersonalCenter = #selector(NavigationBarView.gotoPersonalCenter)
  6. }
  7. }

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. HDU - 3709 - Balanced Number(数位DP)

    链接: https://vjudge.net/problem/HDU-3709 题意: A balanced number is a non-negative integer that can be ...

  2. 配置Sublime,为了Python

    E:\Sublime Text 3\Data\Packages\User\untitled.sublime-build { "cmd": ["C:\Program Fil ...

  3. Tensorflow细节-P194-组合训练数据

    import tensorflow as tf files = tf.train.match_filenames_once("data.tfrecords-*") filename ...

  4. php 数组的计算

    数组是我们最常用到的类型,那如何计算某个一维数组的个数呢.其实我们可以用到我们之前学过的数学函数里面的一个:count(). 我们来看看count函数的用法: int count ( mixed $变 ...

  5. Oracle instr() 字符查找函数

    instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( string1 ...

  6. cf 1037D BFS

    $des$一个 n 个点 m 条边的无向连通图从 1 号点开始 bfs,可能得到的 bfs 序有很多,取决于出边的访问顺序.现在给出一个 1 到 n 的排列,判断是否可能是一个 bfs 序. $sol ...

  7. c++和cuda混合编程 实现传统神经网络

    直接放代码了... 实现的是x1+x2=y的预测,但梯度下降很慢...233333,gpu运行时间很快!! // // main.cpp // bp // // Created by jzc on 2 ...

  8. jmeter之timer --笔记一

    简介:测试过程中需要用到time进行造数据测试,需要各种年月日,或者未来时间,就像python中的time和datetime 1.jmeter中timer,使用—time()函数 1.1 timeSh ...

  9. Dns的作用

    DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 DNS系统:通过 ...

  10. Connection: close

    在http1.1中request和reponse header中都有可能出现一个connection头字段,此header的含义是当client和server通信时对于长链接如何进行处理. 在http ...