Swift编码总结1
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的更多相关文章
- Swift— Swift编码规范之命名规范-备
程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示 ...
- 《从零开始学Swift》学习笔记(Day 56)——命名规范Swift编码规范之命名规范
原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量, ...
- 《从零開始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范
原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自定义的名字,取一个有样而且符合规范的名字非常重要. 命名方法非常多,可是比較有名的,广泛接受命名法有: 匈牙利命名,一般仅仅是命名变量 ...
- Swift之Swift编码规范
swift 支持的 markdown 语法. 1. 编码格式 1.1 使用二元运算符(+, -,==, 或->)的前后都需要添加空格 let value = + 1.2 在逗号后面加一个空格 l ...
- 《从零开始学Swift》学习笔记(Day 57)——Swift编码规范之注释规范:文件注释、文档注释、代码注释、使用地标注释
原创文章,欢迎转载.转载请注明:关东升的博客 前面说到Swift注释的语法有两种:单行注释(//)和多行注释(/*...*/).这里来介绍一下他们的使用规范. 1.文件注释 文件注释就在每一个文件开头 ...
- 《从零開始学Swift》学习笔记(Day 57)——Swift编码规范之凝视规范:文件凝视、文档凝视、代码凝视、使用地标凝视
原创文章.欢迎转载.转载请注明:关东升的博客 前面说到Swift凝视的语法有两种:单行凝视(//)和多行凝视(/*...*/).这里来介绍一下他们的使用规范. 1.文件凝视 文件凝视就在每个文件开头加 ...
- 一种swift编码风格指南(供参考,by linkedin)
http://www.cocoachina.com/swift/20160701/16894.html
- 《从零开始学Swift》学习笔记(Day 58)—— Swift编码规范之变量或常量声明规范
原创文章,欢迎转载.转载请注明:关东升的博客 声明是在声明变量.常量.属性.方法或函数和自定义类型时候需要遵守的规范. 首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释.示例 ...
- [Swift]编码拾遗
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs ...
- Swift编码总结10
1.打开App显示文件已损坏,打不开,您应该将它移到废纸篓,怎么办? 终端输入执行:sudo spctl --master-disable 2.Mac的Siri打开网页控制台,进入开发中模式:不过我觉 ...
随机推荐
- 使用LoadRunner脚本并发下载文件,出现19890错误
需求:10个客户并发下载同一份zip文件.执行的时候,8个Fail了,只下载了两份zip,且无论执行多少遍,都是这样. 错误信息如下:message code:-19890C interpreter ...
- Python中json.dump() 和 json.dumps()的区别
JSON字符串用json.dumps, json.loads JSON文件名用json.dump, json.load 以下内容摘自:<Python Cookbook> json 模块提供 ...
- Tensorflow细节-P170-图像数据预处理
由于6.5中提出的TFRecord非常复杂,可扩展性差,所以本节换一种方式 import tensorflow as tf from tensorflow.examples.tutorials.mni ...
- HTML插入音频和视频:audio和video标签及其属性
一.上传到第三方网站,然后引入例如视频上传到优酷网,然后得到代码 <iframe height=498 width=510 src='http://player.youku.com/embed/ ...
- 推荐VSCode多语言开发,支持一键JAVA
本文梯子 缘起 一.VSCode 开发 NetCore 0.安装 VSCode IDE 1.安装依赖扩展 2.新建一个项目 3.打开已有工程 4.总结 二.VSCode 开发 Vue 1.安装插件 2 ...
- ELK教程2:Kibana的安装
kibana作为ElastciSearch的数据查询展示界面,集成了很多的功能,本文主要讲述如下部署kibana. 安装 安装命令如下: # 下载kibana的npm wget https://art ...
- wpf防止界面卡死
AsyncInvokeHelper.CallbackInvoke(new Action(() => { System.Threading.Tasks.Task.Factory.StartNew( ...
- 乌班图下fluent开启并行报错的解决方法
参考链接: CFD-online原帖:http://www.cfd-online.com/Forums/fluent/149668-fluent-16-0-0-ubuntu-12-04-a.html ...
- ubuntu之路——day8.3 RMSprop
RMSprop: 全称为root mean square prop,提及这个算法就不得不提及上篇博文中的momentum算法 首先来看看momentum动量梯度下降法的过程: 在RMSprop中: C ...
- html同行两个div浮动后下一个div怎么换行的问题
传送门:https://blog.csdn.net/asdfg6541/article/details/78514535