[Swift3]2系から3系へ上げたときの修正内容

スポンサーリンク

だいぶ前、Swift2のコードをSwift3に上げた時に、幾つかエラーもしくはワーニングがでて対応したので、その時のメモをまとめました。

その1

エラー文

warning: target specifies SWIFT_VERSION = '2.3', but it is overridden by TOOLCHAINS = 'com.apple.dt.toolchain.XcodeDefault'

対策

確か、この対策だったと思う。
Locations -> Command Line Tools portion of the Xcode Preferences menu Choosing Xcode 8 resolved the issue for me.

参考:
https://stackoverflow.com/questions/39884323/where-is-xcodes-toolchains-set

Toolchains is not explicitly called out as it was in the prior builds. However, it is still there in the Locations -> Command Line Tools portion of the Xcode Preferences menu Choosing Xcode 8 resolved the issue for me.

その2

エラー文

/〜〜〜〜/ViewController.swift:56:9: Result of call to 'format(_:style:)' is unused

対策

そもそもメソッドが返り値を使っていないので、修正しました。(メソッドのつくりがよくなかった)
(Swift3からデフォルトでメソッドの返り値を使わない時に警告がでるようになったらしいです。)

その3

エラー文

/〜〜〜〜/VIewController.swift:51:20: Non-optional expression of type 'Array<int>' used in a check for optionals

対策

リストの要素が存在する場合に変数へ値を渡すような処理の書き方で注意されていました。

fileprivate var filteredTitlesList: [String] = []

if let filteredTitle: String = filteredTitlesList[indexPath.row] as String { // 'Non-optional expression of type 'String' used in a check for optionals'

  // Do something

}

You are trying to unwrap a value that is already unwrapped, and hence you are getting an error because it doesn’t need unwrapping again.

不要なラッピングを削除するなり、処理を書き換えるなりしました。

参考:

Swift 3 warning: Non-optional expression of type 'String' used in a check for optionals - Stack Overflow

その4

エラー文

ERROR ITMS-4238: Redundant Binary Upload. There already exists a binary upload with build version '1' for train '1.0' at Software Assets/PreReleaseSoftwareAsset

対策

こちらはリリースするときのエラーで、Swift3とは関係ないです。
アップロードするときにバージョンを変えていなかったので、怒られました。
1.1とか1.0.1とビルドバージョンを変更してビルドし直せばいいです。

参考:

コメント

タイトルとURLをコピーしました