2017-06-22 11 views
0
var countryCodes = [String]() 

let codeIndex = countriesList.index(of: countryTextField.text!) 
     var chosenCountryCode? = countryCodes[codeIndex!] 

をチェックする際に3行目は、それが非オプションタイプだと言って、コンパイルエラーを与えるというエラーがコンパイルのマニュアルはindex(of:nilを返すことができると言うArray.index(の:nilを返すことができます。しかし、オプションの値を

どのように私はゼロのためにチェックします

+0

なぜ "selectedCountryCode?"を使用していますか? –

+0

選択した国コードを変数にしたいからです。 – quantumpotato

+0

SwiftはRubyではありません、 'を使用しないでください。または! 'を変数名の接尾辞として使用します。スイフトでは、あなたは '?または '!'を 'action'として' = 'の右側にあるオプション – Hange

答えて

5

をここで同様のシナリオのための作業コードは次のようになります方法は次のとおりです。?

var countryCodes = [String]() 

countryCodes = ["1000","1001","1002","1003","1004","1005","1006","1007","1008","1009"] 

let countryList = ["Afganistan", "Argentina", "Armenia","Belgium","Brunei", "Bulgaria","Cambodia","Egypt","Yemen","Zambia"] 


// assuming we get this from UI: 
let countryTextField_text = "Egypt" 

if let codeIndex = countryList.index(of: countryTextField_text) { 
    let chosenCountryCode = countryCodes[codeIndex] 
    print(chosenCountryCode) 
} 

ウィル出力:1007

+0

リストに存在しなかった国をお試しいただきましたか? – quantumpotato

+0

'if let'構文を使用しているので、 'else'を指定していないので無視します。これがオプションの目的です。それがある場合はそれを使用し、そうでない場合は移動してください。 Btw。私のコードをカットしてプレイグラウンドに貼り付けるだけで、好みのバリエーションで遊ぶことができます。 – Laxus

関連する問題