Swift编码总结1
2024-09-26 13:25:45
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 继承。
最新文章
- 浅谈Scrapy爬虫(一)
- BZOJ 3832: [Poi2014]Rally
- java jdbc sqlhelper
- 使用Maven构件Web应用
- devDependencies和dependencies的区别
- std::ofstream由二进制流写文件的问题
- Linux 命令 - curl: transfer a URL
- 【程序员的SQL金典】笔记(第1章~第5章)
- 【docker】docker初试与填坑
- 20155323 2016-2017-2 《Java程序设计》第5周学习总结
- 【leetcode81】Product of Array Except Self
- Java中级开发工程师知识点归纳
- UVA1374-Power Calculus(迭代加深搜索)
- centos 环境搭建jenkins服务
- SpringBoot 使用RedisTemplate操作Redis
- java多线程小题一瞥
- 【373】LabelEncoder 相关
- [C#]System.Timers.Timer(2)
- 如何创建magento模块z之Hello World例子(转)
- uboot之第一阶段