码迷,mamicode.com
首页 > 编程语言 > 详细

Swift编码总结1

时间:2018-04-21 14:24:21      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:表示   mat   微信支付   disco   div   cto   home   history   释放   

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

标签:表示   mat   微信支付   disco   div   cto   home   history   释放   

原文地址:https://www.cnblogs.com/pengsi/p/8900768.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!