2017-07-01 28 views
-1

我有這樣的代碼部分:斯威夫特如果值是零設定的默認值,而不是

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

的問題是,strValue可以是零。

爲此,我檢查一下這樣的:

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

但我有一個更快,更簡單的方法來做到這一點?

我讀了類似??來解決它。但我不知道如何使用它?

UPDATE 非常感謝許多反饋意見。 現在我unterstand ?? ??操作員,但在這種情況下我是如何意識到的?

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)) 

我該怎麼用?運算符在我的代碼的最後一行?

UPDATE 2 好吧,我明白了!

txtStreet.stringValue = (((adresse?.value(at: 0) as? NSMutableDictionary)?.value(forKey: kABAddressStreetKey) as? String)) ?? "" 
+1

你的意思是'nil'或一個空字符串'「」'? – Sweeper

+0

nil合併運算符簡潔地完成工作:'textField.stringValue = strValue ?? 「''' – Rob

+1

可能是[在Swift中提供可選的默認值?](https://stackoverflow.com/q/24099985/2976878)的副本,但是你的問題沒有意義,因爲'strValue'不是可選的。 – Hamish

回答

2

你可以像這樣,但你的strValue的應該是可選類型

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

??是零,合併運算,並把我有點明白了。儘管如此,這是一個簡化代碼的有用工具。一個簡單的解釋就是「除非沒有,那麼這個」,所以a ?? b如果它有一個值則返回a,否則返回b。您可以將它們鏈接在一起並返回第一個非零值。例如,a ?? b ?? c ?? d ?? e返回第一個非零值,如果它們全部爲零,則返回e

Nil-Coalescing Operator