だいぶ前、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.
不要なラッピングを削除するなり、処理を書き換えるなりしました。
参考:
その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とビルドバージョンを変更してビルドし直せばいいです。
コメント