学习笔记二
1.cocopods忽略引入库的所有警告:
在Podfile文件加上以下即可。
# 忽略引入库的所有警告
inhibit_all_warnings!
2.第三方库:
# 分页
pod 'DNSPageView', '~> 1.0.1'
#跑马灯
pod 'JXMarqueeView'
#消息提示
pod 'SwiftMessages','~> 4.1.4'
#pod 'YYKit'
#播放网络音频
pod 'StreamingKit'
3.MVVM的ViewModel请求数据,可以设置闭包回调使控制器刷新数据:
// 加载数据
func setupLoadData() {
// 加载数据
viewModel.updataBlock = { [unowned self] in
// 更新列表数据
self.tableView.reloadData()
}
viewModel.refreshDataSource()
}
4.取出字符串.字符之前的字符串:
private func configIdentifier(_ identifier: inout String) -> String {
var index = identifier.index(of: ".")
guard index != nil else { return identifier }
index = identifier.index(index!, offsetBy: 1)
identifier = String(identifier[index! ..< identifier.endIndex])
return identifier
}
5.Swift中的inout关键字:
需要通过一个函数改变函数外面变量的值(将一个值类型参数以引用方式传递),这时,Swift提供的inout关键字就可以实现。
var value = 50
print(value) // 此时value值为50
func increment(value: inout Int, length: Int) {
value += length
}
increment(value: &value,length: 22)
print(value) // 此时value值为72,成功改变了函数外部变量value的值
inout修饰的参数是不能有默认值的,有范围的参数集合也不能被修饰;
一个参数一旦被inout修饰,就不能再被var和let修饰了。
6.Swift泛型的使用:
public func cellWithTableView<T: UITableViewCell>(_ tableView: UITableView) -> T {
var identifier = NSStringFromClass(T.self)
identifier = configIdentifier(&identifier)
var cell = tableView.dequeueReusableCell(withIdentifier: identifier)
if cell == nil {
cell = UITableViewCell(style: .default, reuseIdentifier: identifier)
}
return cell as! T
}