2016-09-10 7 views
4

このコードはSwift 2.3でうまくいきました。番号が4より大きいかどうかを確認するために、TestClassをアンラップしなければならない理由を理解できません。これは、追加呼び出しを保存するためのオプションのチェーン全体です。IF条件で連鎖するSwift3オプション?

この作業を行うには、testClass != nil(またはif letステートメントで暗黙のアンラップを使用)をチェックしてからcountをチェックする必要があります。

これは本当に唯一の方法ですか?

import UIKit 

class testClass 
{ 
    var optionalInt:Int? 
} 

var test:testClass? 

if test?.optionalInt > 4 
{ 

} 
+0

を、これは1つの形式または別の形で多く出現する可能性が高いためです。 – matt

+0

関連:http://stackoverflow.com/questions/39251005/strange-generic-function-appear-in-view-controller-after-converting-to-swift-3 –

答えて

0

オプションの比較演算子は、あなたがこのような何か書く必要があるスウィフト3. SE-0121

から削除されています。この1上の悪いニュースについては申し訳ありませんが、あなたはそれについて尋ねた非常に嬉しい

if test?.optionalInt ?? 0 > 4 
{ 

} 
5

これはバグではありません。それは、悲しいかなら、意図的です。比較の選択肢の暗黙のアンラッピング(>)が言語から削除されました。

したがって、今問題は>の左側にあるものがオプションであり、もうこれを直接4と比較することはできません。あなたはそれをアンラップして、Int、ある方法または別のものを取得する必要があります。

5

最初に、test varを初期化していますか?あなたがそれを価値を与えないなら、もちろんそれはゼロになるでしょう!

if let optionalInt = test?.optionalInt, optionalInt > 4 
{ 

} 

いつものように、安全性>簡潔:

とオプションの連鎖については、問題の書き込みものです。