Swiftでよく使うテクニック

1952 ワード

  • 現在のクラス名let className = String(describing: type(of: self))
  • を取得
  • swift3.0以降はNSNotification nameNSNotification.Name構造体に変更されており、定義を推奨する場合は定数static let kUpdateUserInfo = NSNotification.Name("kUpdateUserInfo")
  • として直接定義.
  • Alamofireアップロード画像同時にパラメータ
  • を携帯
        func uploadfile(_ url :String,par :Dictionary? = 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!;は、外部読み取り専用対内読み取り可能書き込み可能に修飾される.
  • インタフェースを定義するとき、方法定義は、mutatingstruceで自分の変数を修正できることを保証するために、enumで修飾することをできるだけ考慮する.mutatingclassは無効です.