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

Swift 初心者がまとめる Xcode 7.3 で Warning になった Swift の文法

More than 3 years have passed since last update.

Warning の文を見出しとしてまとめます。

Curried function declaration syntax will be removed in a future version of Swift; use a single parameter list

Swift 3.0 でカリー化関数の構文が廃止が決定していますので、今から書き換えておこうね と Xcode が教えてくれます。

カリー化関数ってなんですか…?初めて聞きました…。

Warningになる書き方
func curried(x: Int)(y: String) -> Float {
    return Float(x) + Float(y)!
}
Xcodeの自動修正
func curried(x: Int, y: String) -> Float {
    return Float(x) + Float(y)!
}
GitHubに書かれている代替記述方法
func curried(x: Int) -> (String) -> Float {
    return {(y: String) -> Float in
        return Float(x) + Float(y)!
    }
}

SE-0002: Removing currying func declaration syntax

'var' parameters are deprecated and will be removed in Swift 3

Swift 3.0 で関数の引数に var が使えなくなることが決定していますので、今から書き換えておこうね と Xcode が教えてくれます。

Warningになる書き方
func foo(var i: Int) {
    i += 1
}

Xcodeの自動修正
func foo( i: Int) {
    i += 1
}

Xcode の自動修正だと、結局はエラーになっちゃうんですよね…。

GitHubに書かれている代替記述方法
func foo(inout i: Int) {
    i += 1
}

var x = 1
print(foo(&x))

この print の結果は 2 です。
SE-0003: Removing var from Function Parameters

'++' is deprecated: it will be removed in Swift 3

Swift 3.0 で++演算子の廃止が決定していますので、今から書き換えておこうね と Xcode が教えてくれます。

Warningになる書き方
var x = 1
let a = ++x
let b = x++
Xcodeの自動修正
var x = 1
let a = x += 1
let b = x += 1

いや、for文とかで使うときはこの修正でいいんですけどね…。

代替記述方法
var x = 1
x += 1
let a = x
let b = x
x += 1

successor メソッドを使ってもいいですね。
SE-0004: Remove the ++ and -- operators

'--' is deprecated: it will be removed in Swift 3

Swift 3.0 で--演算子の廃止が決定していますので、今から書き換えておこうね と Xcode が教えてくれます。

Warningになる書き方
var x = 1
let a = --x
let b = x--
Xcodeの自動修正
var x = 1
let a = x -= 1
let b = x -= 1
代替記述方法
var x = 1
x -= 1
let a = x
let b = x
x -= 1

SE-0004: Remove the ++ and -- operators

C-style for statement is deprecated and will be removed in a future version of Swift

これは結構有名かと思われますが、Swift 3.0 で C言語のようなfor文が廃止されます。

Warningになる書き方
for var i = 0; i <= 5; i += 1 {
    print(i)
}

この書き方だと Xcode は自動修正してくれません。

代替記述方法
for i in 0 ..< 5 {
    print(i)
}

for/inループを使うようにすると解消できます。
SE-0007: Remove C-style for-loops with conditions and incrementers

とりあえず、急ぎで書いたので…
気が向いたら追記します…。

treastrain
iOS・watchOS App「Japan NFC Reader」を作っています。 Nat. Institute of Tech., Hachinohe College → Muroran Institute of Tech. Student Apple Teacher Swift Playgrounds認定
https://treastrain.jp
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
ユーザーは見つかりませんでした