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. oracle: jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111

    https://www.cnblogs.com/mmlw/p/5808072.html org.mybatis.spring.MyBatisSystemException: nested except ...

  2. SpringMVC的文件上传与下载

    1. 单文件上传 配置jsp页面 <%@ page contentType="text/html;charset=UTF-8" language="java&quo ...

  3. C#在WebApi 中使用Redis 的方法

    首先Startup public void ConfigureServices(IServiceCollection services) { services.AddControllers(); // ...

  4. python - 使用psutils

    oshelper.py #encoding=utf-8 import psutil import datetime #查看cpu的信息 print u"CPU 个数 %s"%psu ...

  5. 洛谷P1052过河

    题目 不看数据范围的话是一个很简单的DP,可是加上数据范围之后就之前的做法就不行了. 所以我们考虑一下路径压缩. 小数据Code #include <iostream> #include ...

  6. 如何手动安装WordPress主题和插件(Linux)

    1. 去官网找到你想使用的插件或主题,并复制下载地址 2. cd到WordPress网站目录下的插件或主题目录下 这里以我的为例: 安装插件:cd /var/www/html/wp-content/p ...

  7. [代码审计]四个实例递进php反序列化漏洞理解【转载】

    原作者:大方子 原文链接:https://blog.csdn.net/nzjdsds/article/details/82703639 0x01 索引 最近在总结php序列化相关的知识,看了好多前辈师 ...

  8. ORACLE体系结构逻辑结构-表空间、段、区和数据块

    转自: https://www.cnblogs.com/sunziying/p/8994792.html 一.Oracle的逻辑结构 Oracle的逻辑结构是一种层次结构.主要由:表空间.段.区和数据 ...

  9. #C++初学记录(算法测试2019/5/5)(深度搜索)

    深度搜索:Oil Deposits GeoSurvComp地质调查公司负责探测地下石油储藏. GeoSurvComp现在在一块矩形区域探测石油,并把这个大区域分成了很多小块.他们通过专业设备,来分析每 ...

  10. graph embedding 使用方法

    无论是network embedding 还是graph embedding都是通过节点(node)和边的图,学出每个节点的embedding向量. 比较流行的算法有: Model Paper Not ...