[xcode,swift]swift3へ上げたときの修正内容

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

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

・対策

I upgraded my project from Swift 2.2 to 2.3 (Xcode 7 to 8), and committed everything on one Mac. When I pulled from git on my other Mac, and built, I get: War...
確か、この対策だったと思う。

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' used in a check for optionals

・対策

I'm updating a project to Swift 3 and came across the following warning which I can't seem to resolve. fileprivate var filteredTitlesList: = [] if let filter...
ここのリンクと同じ内容でした。
リストの要素が存在する場合に変数へ値を渡すような処理の書き方で注意されていました。

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 SoftwareAssets/PreReleaseSoftwareAsset

・対策

Trying to upload to the App Store. First I got ERROR ITMS-90164/90046: Invalid Code Signing Entitlements which I solved from this ERROR ITMS-90164/90046: Invali...
こちらはリリースするときのエラーで、swift3とは関係ないです。
別にまとめるかもです。
アップロードするときにバージョンを変えていなかったので、怒られました。1.1とか1.0.1とビルドバージョンを変更してビルドし直せばいいです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする