Help us understand the problem. What is going on with this article?

アプリをSwift4.2に対応させる。

前職のエンジニアに連絡が取れず、仕方なくデザイナーである自分が更新作業などを行なっている。Swift5になってしまったので、Swift3のアプリをSwift4.2に移行する必要が発生した。
そのための備忘録として書き留めておきたい。

前提

前提として、このアプリに携わっていると言っても、Swiftはこれを触るまで全くやったことがなく、いつもの業務はデザインがメインで、かたわらでフロントエンド+PHPを触る程度。

やってみる

Swift4.2にコンバート

現在のアプリがSwift3なんで、まずは、Xcode10.1で開いてSwift4.2にコンバートさせる。
1. Conversion to Swift 4.2 is availableをクリック
2. Selecttarget to Convert:で全てのライブラリを選択(最初っから選択されている状態)でNEXTをクリック
3. Minimze Inferenceを選択し、 NEXTをクリック
4. Manual steps necessaryというアラートが表示されるのでOKをクリック
5. 1箇所「Action」のライブラリで変更点が発生するがそのままSave
※ライブラリを変更するのでUnlockする必要がある

Pod の Setting をアップデートする

Update to recommended Settingをクリック
CryptoSwift で使用しているCompilation Modeを使っているが、これを解消してしまうとエラーが発生するので、このチェックを外してDoneをクリック

Willow のエラーを解消

相変わらず、このWillowというライブラリが悪さをするようで、エラーが発生する。

   for key in values.keys where key.rawValue & bitValue > 0 {
                valuesForBit += values[key]!
            }
       for key in values.keys where key.rawValue & UInt.init(bitValue) > 0 {
                    valuesForBit += values[key]!
                }

Clean Build Folder を行う

Snapkitのアップデート

SnapKitの変更点が多すぎるため、snapkitだけアップデートを行った。
SnapKit3.2.0 → SnapKit 4.0.0

Snapkit/Typealiases.swift
    typealias LayoutRelation = NSLayoutRelation
    typealias LayoutAttribute = NSLayoutAttribute

ERROR
'NSLayoutRelation' has been renamed to 'NSLayoutConstraint.Relation'

ERROR
NSLayoutAttribute' has been renamed to 'NSLayoutConstraint.Attribute'

Snapkit/Typealiases.swift
typealias LayoutRelation = NSLayoutConstraint.Relation
typealias LayoutAttribute = NSLayoutConstraint.Attribute

キャッシュのクリア

Xcodeのキャッシュによって変なエラーが発生

キャッシュをクリアする

rm -rf ~/Library/Caches/com.apple.dt.Xcode/

参考:https://qiita.com/shtnkgm/items/c96a58579ec406194fa8

RxSwift と RxCocoa をアップデート

RxSwift と RxCocoa にエラーが出ているが解消方法がわからないため、ライブラリ自体のアップデートを行う。部分的な改修を行うと他に影響が出る可能性が高いため、アップデートをした

RxSwift とRxCocoaのアップデートには他のライブラリもアップデートしなければいけない。

  • RxSwift 3.6.1 → 4.0.0
  • RxCocoa 3.6.1 → 4.0.0
  • RxDataSouces 2.0.2 → 3.1.0
  • RxOptional 3.2.0 → 3.6.2
  • Action 3.2.0 → 3.11.0
  • RxTest 3.6.1 → 4.0.0

最後に

これでなんとかビルドすることができた。
今度はSwift5に対応する必要性があるが、徐々にやっていこうと思う。
ひとまずSwift4.2に対応できてよかった。

一つ学んだことはライブラリはむやみにアップデートしてはいけないってことだ。
特に前任のエンジニアがマニアックなライブラリを使っている場合、アップデートするのは超危険だということがわかった。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした