学习笔记二

学习笔记二

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(_ 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
    }

你可能感兴趣的:(学习笔记二)