# Swift 版本迁移问题总结

> 工程中存在一部分代码逻辑是 Swift 实现的，每次 Swift 版本升级、Xcode 版本升级或许意味着你需要对 Swfit 实现的这部分代码进行升级改动，此篇文章就记录 Swift 每次升级时踩过的坑

## Swift 5  && Xcode 10.2 的踩坑

1. 一部分改动是由于系统通知的名称改变造成的

| 改动前 |  改动后  |
|:--:|:--:|
|  .UIKeyboardWillShow  | UIResponder.keyboardWillShowNotification   |
|  UIAlertControllerStyle.alert | UIAlertController.Style.alert |
| UIAlertActionStyle.cancel | UIAlertAction.Style.alert |
| UIControlState.normal | UIControl.State.normal |
| UIEdgeInsetsMake(0, 20, 0, 20) | UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20) |
| XQNetworkingManager.jsonManager | XQNetworkingManager.useJSONSerializer |
| NSNotification.Name.UITextFieldTextDidChange | UITextField.textDidChangeNotification |

2. 当你修改完语法问题的时候，编译工程，发现还是存在一些问题。大体意思是说 Swift 的编译版本不再支持。所以我们需要选中 targets ，切换到 「Build Settings」 下面，搜索 「Swift Language Version」，在后面勾选合适的 Swift 版本。在这里我选择了 Swift 5

   $$