• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift编码总结1 - 玉思盈蝶

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 继承。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
oc和swift对代码的分组,方便代码查找和导航用发布时间:2022-07-13
下一篇:
swift使用查阅资料备份2发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap