Ho un paio di righe di codice di lavoro:Uso ambiguo di "??"
let email = User.sharedInstance.emailAddress ?? ""
accountEmailAddress.text = email
User.sharedInstance
è un'istanza non facoltativa della classe User
. La sua proprietà emailAddress
è facoltativa String?
. accountEmailAddress
è un UILabel.
Se provo a trasformare questo in una sola riga di codice:
accountEmailAddress.text = User.sharedInstance.emailAddress ?? ""
ottengo l'errore del compilatore Swift "uso ambiguo di '??'".
Non riesco a capire cosa sia ambiguo riguardo l'uso dell'operatore a coalescenza nulla qui. Sto cercando di scoprire perché il compilatore si lamenta e, per curiosità, se c'è un modo per renderlo un one-liner pulito.
(Xcode 6 beta 6.)
Edit: la riproduzione minima in un parco giochi:
// Playground - noun: a place where people can play
var foo: String?
var test: String?
// "Ambiguous use of '??'"
foo = test ?? "ValueIfNil"
Suppongo che sia causato da un operando: 'NSString' e l'altro è' String', quindi non è possibile determinare il valore restituito. –
Sia 'UILabel.text' che' User.emailAddress' sono 'String's. – akashivskyy
Hmm, 'label.text = Opzionale (" forse ") ?? "sure" 'funziona per me ... – akashivskyy