懒加载控件
private lazy var tableView : UITableView = { [unowned self] in
let tableView = UITableView(frame: CGRectZero, style: .plain)
tableView.tg_width.equal(.fill)
tableView.tg_height.equal(.fill)
tableView.delegate = self
tableView.dataSource = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "12")
return tableView
}()
简单的一个闭包
func callBackEvent(url: String,
reponse:(_ result: String) ->()) {
let c1 = ""
reponse(c1)
}
类的初始化
class person {
var name : String = "" /// 值类型,初始化为空值
var age : Int = 0 /// 值类型,初始化为空值
var myStore : store? /// 对象类型,最好设置为可选类型
}
可选链
协议
// 1. 协议标记为 @objc,并继承 NSObjectProtocol(可选方法必须的语法)
@objc protocol MyOptionalProtocol {
// 2. 强制实现的方法
func requiredMethod()
// 3. 使用 optional 关键字定义可选方法
@objc optional func optionalMethod()
@objc optional var optionalProperty: String { get }
}
// 4. 类遵循协议(必须是 class 类型)
class MyClass: NSObject, MyOptionalProtocol {
func requiredMethod() {
print("必须实现的方法")
}
// 可选方法/属性可不实现
}
Result 的函数
func fetchData(completion: @escaping (Result<String, Error>) -> Void) {
// 模拟异步操作
DispatchQueue.global().async {
let isSuccess = Bool.random()
if isSuccess {
completion(.success("数据加载成功"))
} else {
completion(.failure(NSError(domain: "com.example.error", code: 404")))
}
}
}
/// 使用
fetchData { result in
switch result {
case .success(let data):
print("成功: \(data)")
case .failure(let error):
print("失败: \(error.localizedDescription)")
}
}
cell 可以这种方式赋值
var entity : goods? {
didSet {
self.nameLabel.text = entity?.goods_name ?? ""
self.nameLabel.sizeToFit()
}
}