2017-07-01 20 views
-1

nilを設定したデフォルト値である場合、私は、このコードの一部を持っている:スウィフト値が代わりに

let strValue = String() 
textfield.stringValue = strValue! 

問題はstrValueがnilにできることです。このため

私はこのようにそれを確認してください。

if strValues.isEmpty() { 
    textfield.stringValue = "" 
} else { 
    textfield.stringValue = strValue! 
} 

しかし、私がこれを行うための迅速かつ簡単な方法?

私はそれを解決するために??のようなものを読んでいます。しかし、私はそれを使用する方法を知らない?

更新 多くのフィードバックに感謝します。 今私は理解していない??この状況で私はそれをどのように認識していますか?

let person = PeoplePicker.selectedRecords as! [ABPerson] 
let address = person[0].value(forProperty: kABAddressProperty) as? 
     ABMultiValue 
txtStreet.stringValue = (((address?.value(at: 0) as! NSMutableDictionary).value(forKey: kABAddressStreetKey) as! String)) 

私はどのように使用できますか?私のコードの最後の行に演算子?

更新日2 よろしいですか?

あなたはこのように行うことができますが、あなたのstrValueには、オプションのタイプでなければなりません
txtStreet.stringValue = (((adresse?.value(at: 0) as? NSMutableDictionary)?.value(forKey: kABAddressStreetKey) as? String)) ?? "" 
+1

あなたは 'nil'または空の文字列' "" 'を意味するのですか? – Sweeper

+0

nil coalescing演算子は、ジョブを簡潔に実行します。 'textField.stringValue = strValue ?? "" ' – Rob

+1

おそらく、[Swiftのオプションのデフォルト値を提供する](https://stackoverflow.com/q/24099985/2976878)と重複していますが、' strValue'はオプションではないので質問は意味をなさない。 – Hamish

答えて

2

let strValue:String? 
textfield.stringValue = strValue ?? "your default value here" 
0

??はnilに-合体演算子であり、そしてあまりにも、理解することが私に少しかかりました。これはコードを単純化するのに便利なツールです。簡単な説明は「それが無ければ、それでは」です。したがって、a ?? bは値がある場合はa、値がない場合はbを返します。それらを連鎖させて、最初の非nil値を返すことができます。例の場合、a ?? b ?? c ?? d ?? eは、最初のnil以外の値、またはその前にすべてがnilの場合はeを返します。

Nil-Coalescing Operator

関連する問題