Swift编码总结1

Posted pengsi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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: 200, 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中的类与结构体有如下相似点:

1.定义属性来存储值。

2.定义函数来提供功能。

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

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

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

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

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

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

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

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

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

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

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编码总结9

Swift编码总结5

Swift编码总结4

Swift编码总结7

Swift编码总结8

swift常用代码片段