安裝Xcode 9.0垦藏,語(yǔ)法升級(jí)到swift4.0后只是根據(jù)系統(tǒng)提示更改了報(bào)錯(cuò)的語(yǔ)法,這個(gè)過程還好颈畸,基本上跟著提示走就可以乌奇。和原來不一樣的是没讲,不是雙擊報(bào)錯(cuò)的紅色而是點(diǎn)Fix。但是工程基本ok后就要開始解決警告(Warning)了礁苗,然后就碰到了一些問題爬凑。
1.substring(from:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator. 警告
解決辦法
let newStr = String(str[..<index]) // = str.substring(to: index) In Swift 3
let newStr = String(str[index...]) // = str.substring(from: index) In Swif 3
let newStr = String(str[range]) // = str.substring(with: range) In Swift 3
2.第三方庫(kù)升級(jí)
只是列舉我用到的
pod 'Alamofire','~> 4.5'
pod 'Moya', '>= 9.0'
pod 'SwiftyJSON'
pod 'FMDB'
pod 'MBProgressHUD'
pod 'MJRefresh'
pod 'IQKeyboardManagerSwift','>= 5.0.0'
pod 'SDWebImage'
pod 'SnapKit'
pod 'Charts'
附上終端截圖
其中的Charts我直接更新到最新了
Moya從8.X升級(jí)到9.X有改動(dòng),要細(xì)看试伙,不然真的蒙蔽(差點(diǎn)以為要大改)嘁信。
從8.x升級(jí)到9.x的Github文檔
public protocol TargetType {
/// The target's base `URL`.
var baseURL: URL { get }
/// The path to be appended to `baseURL` to form the full `URL`.
var path: String { get }
/// The HTTP method used in the request.
var method: Moya.Method { get }
/// Provides stub data for use in testing.
var sampleData: Data { get }
/// The type of HTTP task to be performed.
var task: Task { get }
/// Whether or not to perform Alamofire validation. Defaults to `false`.
var validate: Bool { get }
// The headers to be used in the request.
var headers: [String: String]? { get }
}
這是9.x的協(xié)議,新增了一個(gè)必須屬性headers疏叨,然而我并沒有使用潘靖,直接設(shè)置為nil了
var headers: [String : String]? { return nil }
移除了之前的parameters及parameterEncoding,然后新增了Task的類型蚤蔓。其實(shí)就是把這兩個(gè)屬性寫到了Task里
var task: Task {
return .requestParameters(parameters: self.parameters!, encoding: URLEncoding.default)
}
也就是說增加headers卦溢,刪掉parameterEncoding,然后Task更換寫法就OK啦秀又。如果有不足歡迎討論单寂。