一、目錄結構
- 目錄結構分析
- Controllers : 控制器文件
- Views : View文件
- Models : 模型文件
- Extensions : 一些分類擴展
- Constant : 常量
- Other : 工具類和第三方庫
- Resources : 資源文件
- Services : API服務
Networking
網絡請求是采用Alamofire+Moya,只需要創建一個enum
去實現Moya
的TargetType
協議,然后配置URL
和parameters
等即可完成網絡請求。詳情可以看APIConstant.swift
Moya
創建一個service的類,負責網絡請求
相關文章 Moya用法
Moya網絡抽象層
SnapKit
參考文章 自動布局SnapKit的詳細使用
知識點
- 使用
fileprivate
聲明屬性和方法,只能在本文件中被訪問,包括在extension className
擴展文件中也能訪問;
而private
聲明的方法和屬性只能在該類中訪問,不能再再擴展文件中訪問;
internal
(默認訪問級別,internal修飾符可寫可不寫);
public
可以被任何人訪問。但其他module中不可以被override和繼承,而在module內可以被override和繼承;
open
可以被任何人使用,包括override和繼承。
從高到低排序如下:
open > public > interal > fileprivate > private
空合運算符
??
a??b
a是一個可選值,a不為nil 取a的值,a為nil 取b得值泛型運用
// MARK: - 擴展UITableView, 不用傳入identifier參數 identifier參數為類名
public extension UICollectionView {
public func dequeueReusableCell<T: Reusable>(indexPath: IndexPath) -> T {
return self.dequeueReusableCell(withReuseIdentifier: T.reuseIdentifier, for: indexPath) as! T
}
func registerClass<T: UICollectionViewCell>(_: T.Type) where T: Reusable {
self.register(T.self, forCellWithReuseIdentifier: T.reuseIdentifier)
}
}
public protocol Reusable: class {
static var reuseIdentifier: String { get }
}
extension Reusable {
static var reuseIdentifier : String {
return String(describing: self)
}
}