Swift常用的技巧

  • 拿到当前类名let className = String(describing: type(of: self))
  • swift3.0之后NSNotification name已经修改成NSNotification.Name结构体了,建议定义的时候直接定义为常量static let kUpdateUserInfo = NSNotification.Name("kUpdateUserInfo")
  • Alamofire上传图片同时携带参数
    func uploadfile(_ url :String,par :Dictionary<String,Any>? = nil,filedata :Data? = nil,fileName :String = "iamge.png", call :NetWorkFinishCall?){
        Alamofire.upload(multipartFormData: { (MultipartFormData) in
            if filedata != nil{
                MultipartFormData.append(filedata!, withName: "file", fileName: fileName, mimeType: "image/png");
            }
            if par != nil{
                for (key,value) in par!{
                    MultipartFormData.append((value as! String).data(using: .utf8)!, withName: key)
                }
            }
        }, to:NetWorkTool.shareInstance.BaseUrl! + APPDefine.APIDefine.register) { (result) in
            switch result{
            case .success(let upload,_,_):
                upload.responseJSON(completionHandler: { (data) in
                    if let block = call{
                        if let error = data.error{
                        }
                        let jsonObj = JSON(data:data.data!)
                        block((data.error == nil),jsonObj,data.error)
                    }
                })
                break
            case .failure(let error):
                if let block = call{
                    block(false,nil,error)
                }
                break
            }
        }
    }
  • private(set) var a :String!;修饰为对外只读对内可读可写。
  • 定义接口的时候方法定义尽量考虑使用mutating修饰,以保证该方法在struceenum中能够修改自己的变量;mutatingclass是无效的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容