Come si imposta una proprietà facoltativa di un protocollo? Ad esempio, UITextInputTraits ha un numero di proprietà di lettura/scrittura opzionali. Quando provo il seguente ottengo un errore di compilazione (Impossibile assegnare a 'KEYBOARDTYPE' in 'textInputTraits'):Swift: impostazione di una proprietà opzionale di un protocollo
func initializeTextInputTraits(textInputTraits: UITextInputTraits) {
textInputTraits.keyboardType = .Default
}
Normalmente quando si accede a una proprietà facoltativa di un protocollo si aggiunge un punto di domanda, ma questo non funziona quando si assegna un valore (di errore: non è possibile assegnare al risultato di questa espressione):
textInputTraits.keyboardType? = .Default
il protocollo si presenta come: (? ancora)
protocol UITextInputTraits : NSObjectProtocol {
optional var keyboardType: UIKeyboardType { get set }
}
Ancora impossibile da Swift 2.2 – adib
Ancora impossibile da Swift 4 – Speakus
E per una buona ragione. Usa 'opzionale func setSomething (_ :)'. – akashivskyy