swift 4.0 踩坑记录

安装Xcode 9.0,语法升级到swift4.0后只是根据系统提示更改了报错的语法,这个过程还好,基本上跟着提示走就可以。和原来不一样的是,不是双击报错的红色而是点Fix。但是工程基本ok后就要开始解决警告(Warning)了,然后就碰到了一些问题。

1.substring(from:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator. 警告
解决办法

let newStr = String(str[..

2.第三方库升级
只是列举我用到的

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'

附上终端截图


swift 4.0 踩坑记录_第1张图片
终端截图

其中的Charts我直接更新到最新了

Moya从8.X升级到9.X有改动,要细看,不然真的蒙蔽(差点以为要大改)。
从8.x升级到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的协议,新增了一个必须属性headers,然而我并没有使用,直接设置为nil了
var headers: [String : String]? { return nil }
移除了之前的parameters及parameterEncoding,然后新增了Task的类型。其实就是把这两个属性写到了Task里

var task: Task {
        return .requestParameters(parameters: self.parameters!, encoding: URLEncoding.default)
    }

也就是说增加headers,删掉parameterEncoding,然后Task更换写法就OK啦。如果有不足欢迎讨论。

转载请注明出处,谢谢。

你可能感兴趣的:(swift 4.0 踩坑记录)