zoukankan      html  css  js  c++  java
  • 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( 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 继承。

  • 相关阅读:
    Spring中常用的配置和注解详解
    SpringBoot中的常用配置
    Maven项目创建问题
    hibernate缓存:一级缓存和二级缓存
    Hibernate标准查询
    Hibernate中Hql的查询
    Hibernate中对象的三种状态
    Hibernate中使用load和get加载的区别
    Spring增强
    Spring代理模式
  • 原文地址:https://www.cnblogs.com/pengsi/p/8900768.html
Copyright © 2011-2022 走看看