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打开网页控制台,进入开发中模式:不过我觉 ...
随机推荐
- Nutch2.1+solr3.6.1+mysql5.6问题
1.Nutch2.1问题 1.1 问题:导入完成后,Nutch2.1里面runtime仍旧不能运行,出现jobfailed等错误. 解决:runtime里的nutch调试过程和导入Eclipse差不多 ...
- C#多线程代码示例
using System; using System.Threading; namespace MultiThreadDemo { class Program { public static void ...
- vue创建组件的方式
一.直接通过Vue.extend的方式创建组件 // 通过vue.extend 来创建全局组件 var com1 = Vue.extend({ template:'<h3>这是h3组件&l ...
- Tensorflow细节-P194-组合训练数据
import tensorflow as tf files = tf.train.match_filenames_once("data.tfrecords-*") filename ...
- HTML 010 radio
Struts2单选按钮标签s:radio的使用及其设置默认值 转载atom168 发布于2014-12-01 15:40:59 阅读数 519 收藏 展开 首先在页面中引入struts标签库: &l ...
- 洛谷 P1279 字串距离 题解
每日一题 day24 打卡 Analysis 字符串+dp 仔细观察发现,对于f[i][j],它的值为以下三个值中的最小者: f[i-1][j]+k //a[i]对应空格 f[i][j-1]+k // ...
- bzoj 5408: string 后缀自动机 + LCT
联赛前练练码力. code: #include <vector> #include <cstdio> #include <cstring> #include < ...
- learning java 访问文件和目录
import java.io.File; import java.io.IOException; public class FileTest { public static void main(Str ...
- 生活 RH阴性血 AB型
这个血型很稀有,外国多些,中国很少. ABO型:A.B.AB.O RH血型系统:阴性,阳性 RH阴性血,被称为熊猫血,估计是稀有吧,阴性血缺抗D,我老婆的血型抗原好像是:ccee,大部分汉族人都有抗D ...
- sudo与用户权限
sudo,以root的身份另起新进程 注意:cd是shell内置的,不会另起新进程,故sudo cd会提示找不到命令 sudo使用当前用户密码,su使用切换用户的密码,默认切换为root sudo通常 ...