読者です 読者をやめる 読者になる 読者になる

知行合一

とか言ってみる

【Swift】swift3.0になってSyntax Converterで以前のバージョンのが直らない部分を書き直してみた

9/24 間違いもあったので書き直しました。少しずつ追記します。

変更点のメモということで。
コンバータで直ったかもしれないところも含めて。

//swift 3.0
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(_:)))
targetView.addGestureRecognizer(tapGesture)

func tapBlurButton(_ sender: UITapGestureRecognizer) {}

//それ以前
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapGesture(_:)))
targetView.addGestureRecognizer(tapGesture)

func tapGesture(sender: UITapGestureRecognizer){}
//swift 3.0
button.setImage(UIImage(named: ("name"), for: UIControlState)

//それ以前
button.setImage(UIImage(named: ("name"), forState: UIControlState.Normal)
//swift 3.0 (これでいいのか自信ない)
_ = self.navigationController?.popViewController(animated:false)

//それ以前
self.navigationController?.popToRootViewController(animated: true)



Syntax Converterで直ったものは適当にメモ。

  • アクセス修飾子にfileprivateとopenが追加された。ゆるい順にopen, public, internal, fileprivate, private。詳しくは

[Swift 3.0] アクセス修飾子にopenとfileprivateが追加された話 | Developers.IO

  • userInteractionEnabledがisUserInteractionEnabledに変更
  • let userDefaults = NSUserDefaults.standardUserDefaults()がlet userDefaults = UserDefaults.standardに変更
  • let unarchive = NSKeyedUnarchiver.unarchiveObjectWithData(data)がlet unarchive = NSKeyedUnarchiver.unarchiveObject(with: data)に変更
  • button.selected = trueがbutton.isSelectedに変更
  • CGAffineTransformMakeTranslation(x, 0)がCGAffineTransform(translationX: x, y: 0)に変更
  • scrollView.setContentOffset(CGPointMake(toX, 0), animated: true)がscrollView.setContentOffset(CGPoint(x: toX, y: 0), animated: true)に変更
  • title = dictionary.objectForKey("title") as! Stringがtitle = dictionary.object(forKey: "title") as! Stringに変更
  • aCoder.encodeObject(title!, forKey: "title")がaCoder.encode(title!, forKey: "title")に変更
  • title = aDecoder.decodeObjectForKey("title") as? Stringがtitle = aDecoder.decodeObject(forKey: "title") as? Stringに変更
  • mapView.setCenterCoordinate(center, animated: true)がmapView.setCenter(center, animated: true)に変更
  • viewController.presentViewController(safariViewController, animated: true, completion: nil)がviewController.present(safariViewController, animated: true, completion: nil)

AlamofireやSnapKit、UITextFiledEffectsなど徐々に3.0対応してくれていて助かった〜。