1. fileprivate (set) var hasSetDiscount = false中fileprivate (set)表示什么意思:

 //设置setter私有,但是getter为public

2.取值需要判断:

 if let text = textField.text, !text.isEmpty {}
if let finish = resultDic["finish"] as? Bool,finish {
// finish为true
}else{
// finish为false
}

3.flatMap使用:

dataSource = dataSource.flatMap({ (model) -> TipModel? in
model.isChoosen = false
return model
})

4.dismiss之后push回到某个页面:

self.dismiss(animated: false, completion: {
let dvc = DishAAController()
dvc.personNum = num
if let tempNav = (UIApplication.shared.delegate as? AppDelegate)?.window?.rootViewController as? BaseNavigationController{
for vc in tempNav.childViewControllers {
if vc.isKind(of: WaiterHomeViewController.self){
vc.navigationController?.pushViewController(dvc, animated: false)
}
}
}
})

5.根据类型选择不同的值:

使用枚举和结构体。
import UIKit struct ApplyPayModel { let type: ApplyPayType
let qrString: String
var title: String{
return type.typeName()
}
var desc: String {
return type.infoString
}
} enum ApplyPayType: String {
case ali = "ali"
case wechat = "wechat"
case card = "card" func typeName() -> String {
switch self {
case .ali:
return GLOBAL_LANGUAGE("支付宝")
case .wechat:
return GLOBAL_LANGUAGE("微信支付")
case .card:
return GLOBAL_LANGUAGE("欢乐E卡")
}
} func getPayCompanyImageName()-> String {
switch self {
case .ali:
return "AliPay"
case .wechat:
return "WeChat"
case .card:
return "ChinaMerchantsBank"
}
} var infoString: String {
switch self {
case .ali:
return GLOBAL_LANGUAGE("支付宝扫码 开通自动买单功能")
case .wechat:
return GLOBAL_LANGUAGE("微信扫码 开通自动买单功能")
case .card:
return GLOBAL_LANGUAGE("欢乐E卡 开通自动买单功能")
}
} }

6.点击弹出控制器:

class LanguageViewController: UITableViewController {

    override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClassFromClass(type: UITableViewCell.self)
} override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let presentingViewController = self.presentationController { let size = tableView.sizeThatFits(presentingViewController.containerView?.size ?? .zero)
self.preferredContentSize = CGSize(width: , height: size.height)
}
}
}

7.控制器传model初始化控制器:

let model: CardPayHistoryInfoModel
init(payinfo: CardPayHistoryInfoModel) {
self.model = payinfo
super.init(nibName: "NFCCardPrintPreviewController", bundle: nil) }

8.Struct定义model和Class定义model区别:

Swift中的类与结构体有如下相似点:

.定义属性来存储值。

.定义函数来提供功能。

.通过定义下标语法使用下标的方式取值。

.定义构造方法来对其进行初始化。

.通过扩展来在原始基础上添加功能。

.通过协议来定义实现标准。

当然类和结构体也有许多不同点,下面这些功能是类独有的,结构体没有:

.通过继承来创建类的子类。

.在运行时允许对类的实例进行类型的检查和解释。

.析构方法可以释放被类引用的资源。

.通过引用计数允许一个类实例的多处引用。

当开发者在代码中传递这些实例时,结构体总是被赋值,而类则是被引用。这是结构体和类的最本质区别。

9.对Action统一结构体处理:

 fileprivate struct Action {
static let backClick = #selector(ScreenSaverController.back(_:))
}

10.where Self: UIView 中的where Self是什么意思?

@objc protocol NavigationBarProtocol: NSObjectProtocol {
func updateViewForLanguage()
} extension NavigationBarProtocol where Self: UIView{ func configBackgroundColor() {
self.backgroundColor = UIColor(hexString: "1f2124")
}
func addWaiterLoginSwipe(){
self.viewController?.addWaiterLoginSwipe()
}
}

NavigationBarProtocol这个协议只能被 UIView 继承。

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

  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. Coins in a Line

    Description There are n coins in a line. Two players take turns to take one or two coins from right ...

  2. http和https 握手过程

    这几天测试打印机一直出现打印延迟或者不打印的BUG.找了几天也没有发现为啥没有打印或者打印延迟.然后今天公司的研发大佬过来找问题,并开个会,瞬间所有的问题都找出了并且知道怎么解决了.大佬果然还是大佬. ...

  3. go设置使用多少个cpu

    package main import ( "fmt" "runtime" ) func main() { n := runtime.NumCPU() fmt. ...

  4. 查看java的jar包源码

    1.jd-gui (windows环境) 下载地址 https://files.cnblogs.com/files/indifferent/jd-gui-windows-1.5.1.zip 下载并解压 ...

  5. Qt同步线程(QMutex QMutexLocker QReadWriteLock QSemaphore QWaitCondition )

    Qt同步线程 我们知道,多线程有的时候是很有用的,但是在访问一些公共的资源或者数据时,需要进行同步,否则会使数据遭到破坏或者获取的值不正确.Qt提供了一些类来实现线程的同步,如QMutex,QMute ...

  6. 18、TaskScheduler原理剖析与源码分析

    一.源码分析 ###入口 ###org.apache.spark.scheduler/DAGScheduler.scala // 最后,针对stage的task,创建TaskSet对象,调用taskS ...

  7. LOJ#565. 「LibreOJ Round #10」mathematican 的二进制 分治,FFT,概率期望

    原文链接www.cnblogs.com/zhouzhendong/p/LOJ565.html 前言 标算真是优美可惜这题直接暴力FFT算一算就solved了. 题解 首先,假装没有进位,考虑解决这个问 ...

  8. 统计单词Java

    功能0:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位. 功能1:输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字 ...

  9. 蛋疼的springboot web项目使用jetty容器运行

    出现的问题: 今天自己新建了一个maven webapp项目,准备自己看看springboot的东西,搭好的项目是这样的 一切都很正常啊,用run App的方式直接启动 成功啦,本应该到此结束,喝茶吃 ...

  10. [Linux] RTC 读写指令及测试程序

    CPU:RK3288 系统:Linux IC:hym8563 在 Linux 系统中,指令 date 和 hwclock 都可以读写时间 date:读写系统时间,写时间需要管理员权限 hwclock: ...