Como obter o valor associado de uma enumeração rápida, independentemente do caso da enumeração
Eu tenho um objeto FormField que possui duas propriedades: uma Stringname
e umvalue
que pode aceitar qualquer tipo - por isso eu fizAny!
. No entanto, me disseram emuma pergunta separada usar uma enumeração com valores associados em vez deAny!
.
enum Value {
case Text(String!)
case CoreDataObject(NSManagedObject!)
}
class FormField {
var name: String
var value: Value?
// initializers...
}
Essa abordagem torna muito detalhado verificar a nulidade, no entanto. Se eu quisesse exibir uma exibição de alerta para todos os campos ausentes no formulário, terei que repetir uma verificação nula para todos os casos em uma instrução switch:
for field in self.fields {
if let value = field.value {
switch value {
case .Text(let text):
if text == nil {
missingFields.append(field.name)
}
case .CoreDataObject(let object):
if object == nil {
missingFields.append(field.name)
}
}
}
}
Existe uma maneira mais curta de acessar o valor associado à enumeração, independentemente do tipo? Se eu criar FormField.value umAny!
o código acima seria tão fácil quanto:
for field in self.fields {
if field.value == nil {
missingFields.append(field.name)
}
}