1.编码转换:

dataString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
requestData.stringValue.removingPercentEncoding ?? ""

2.取值需要判断为空设置为空,防止取值崩溃:

                //总页数
let totalPageCount = dicData?["recordNum"] as? String
//菜品数据源
var dataSource = dicData?["orderInfo"] as? [Dictionary<String,Any>] ?? [Dictionary<String,Any>]()

3.可以在UIView里添加刷新,block传递到控制器操作网络请求即可:

        //上拉加载
historyTableView.mj_footer = MJRefreshAutoNormalFooter(refreshingBlock : {[weak self]() -> Void in
self?.refreshBack?()
})

4.setNeedsLayout和layoutIfNeeded区别:

不能直接调用这个方法layoutSubviews。强制刷新布局,调用 setNeedsLayout,如果想马上刷新界面,调用layoutIfNeeded

setNeedsLayout

标记为需要重新布局,不立即刷新,但layoutSubviews一定会被调用

配合layoutIfNeeded立即更新

layoutIfNeeded

如果,有需要刷新的标记,立即调用layoutSubviews进行布局

一般写在UIView动画里。

https://yiweifen.com/html/news/WaiYu/74770.html

http://ios.jobbole.com/84219/

5.for循环推荐使用:

 for (index,item) in potTaste.details.enumerated() {  }

 data.forEach { (label, model) in {  }

6.枚举不同的type,设置不同的属性:

enum ButtonName {
case Split(String,UIColor,UIColor) //拆分
case Doubly(String,UIColor,UIColor) //倍增
case Delay(String,UIColor,UIColor) //延迟
case SureOrder(String,UIColor,UIColor) //确认下单
case Rush(String,UIColor,UIColor) //催菜
case Confirm(String,UIColor,UIColor) //确认上菜
case Gift(String,UIColor,UIColor) //赠菜
case GiveBack(String,UIColor,UIColor) //退菜
case ChangeTableDish //单品转台
}

7.Cell中接受多个model可以使用元组:

typealias ModelTuple = (dishLabel: DishLabel, dishViewModel: DishViewModel)
var model: ModelTuple!

8.CollectionView 大量 Item 快速滑动时掉帧严重问题的优化:

if #available(iOS 10.0, tvOS 10.0, *) {
collectionView?.prefetchDataSource = self
}

9.convert。。。to。。。:

            // 将collectionView在控制器view的中心点转化成collectionView上的坐标
var topPoint = CGPoint(x: UIScreen.main.bounds.size.width*0.5, y: NavigationBarH)
var pInView = view.convert(topPoint, to: collectionView)

10.MJRefresh根据拖拽比例自动切换透明度:

let header = MJRefreshNormalHeader(refreshingTarget: self, refreshingAction: #selector(loadNew))
// 设置自动切换透明度(在导航栏下面自动隐藏)
header?.isAutomaticallyChangeAlpha = true;

Swift编码总结3的更多相关文章

  1. Swift— Swift编码规范之命名规范-备

    程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示 ...

  2. 《从零开始学Swift》学习笔记(Day 56)——命名规范Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量, ...

  3. 《从零開始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自定义的名字,取一个有样而且符合规范的名字非常重要. 命名方法非常多,可是比較有名的,广泛接受命名法有: 匈牙利命名,一般仅仅是命名变量 ...

  4. Swift之Swift编码规范

    swift 支持的 markdown 语法. 1. 编码格式 1.1 使用二元运算符(+, -,==, 或->)的前后都需要添加空格 let value = + 1.2 在逗号后面加一个空格 l ...

  5. 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释

    原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ...

  6. 《从零開始学Swift》学习笔记(Day 57)——Swift编码规范之凝视规范:文件凝视、文档凝视、代码凝视、使用地标凝视

    原创文章.欢迎转载.转载请注明:关东升的博客 前面说到Swift凝视的语法有两种:单行凝视(//)和多行凝视(/*...*/).这里来介绍一下他们的使用规范. 1.文件凝视 文件凝视就在每个文件开头加 ...

  7. 一种swift编码风格指南(供参考,by linkedin)

    http://www.cocoachina.com/swift/20160701/16894.html

  8. 《从零开始学Swift》学习笔记(Day 58)—— Swift编码规范之变量或常量声明规范

    原创文章,欢迎转载.转载请注明:关东升的博客 声明是在声明变量.常量.属性.方法或函数和自定义类型时候需要遵守的规范. 首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释.示例 ...

  9. [Swift]编码拾遗

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs ...

  10. Swift编码总结10

    1.打开App显示文件已损坏,打不开,您应该将它移到废纸篓,怎么办? 终端输入执行:sudo spctl --master-disable 2.Mac的Siri打开网页控制台,进入开发中模式:不过我觉 ...

随机推荐

  1. PostgreSQL日志分析工具

    PostgreSQL日志分析工具 postgresqllinux PostgreSQL日志审计可以配合 pgbench.jmeter...测试工具制定测试计划测试性能,由于日志审计比较影响性能,在不需 ...

  2. header中Content-Disposition的作用与使用方法

    下载文件的时候会使用: Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件.Content-disposition其实可以控制用 ...

  3. 米勒罗宾素数检测(Miller-Rabin)

    适用范围:较大数的较快素性判断 思路: 因为有好的文章讲解具体原理(见参考文章),这里只是把代码的大致思路点一下,读完了文章如果还有些迷糊,可以参考以下解释 原理是费马小定理:如果p是素数,则a^(p ...

  4. Yii集成PHPWord

    一.安装 1.下载composer curl -sS https://getcomposer.org/installer | php 将composer.phar文件移动到bin目录以便全局使用com ...

  5. EntityFramework6 学习笔记(一)

    1.什么是EF? EF是一种ORM(Object-relational mapping)框架,它能把我们在编程时使用对象映射到底层的数据库结构.比如,你可以在数据库中建立一个Order表,让它与程序中 ...

  6. lambda()函数

    lambda lambda原型为:lambda 参数:操作(参数) lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方.这区别于def定义的函数. ...

  7. 一个Tomcat下部署多个项目异常:org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的解决方法

    内容简介 在测试服务器上Tomcat下部署两个Spring boot项目,总是一个能启动成功,另一个启动不成功.这两个war包单独部署均能正常启动. 查看日志:启动时报出 org.springfram ...

  8. [CSS] prefers-reduced-motion

    The prefers-reduced-motion CSS media feature is used to detect if the user has requested that the sy ...

  9. CDN工作机制

    CDN(content delivery network),即内容分布网络,是一种构建在现有Internet上的一种先进的流量分配网络.CDN以缓存网站中的静态数据为主,当用户请求动态内容时,先从CD ...

  10. B/S之大文件分段上传、断点续传

    4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上 ...