Wie man den zugehörigen Wert einer schnellen Aufzählung erhält, unabhängig vom Aufzählungsfall
Ich habe ein Objekt FormField, das zwei Eigenschaften hat: a Stringname
, und einvalue
was jeden Typ annehmen kann - daher habe ich es geschafftAny!
. Allerdings wurde mir in @ gesa eine separate Frage, um eine Aufzählung mit zugeordneten Werten anstelle von @ zu verwendeAny!
.
enum Value {
case Text(String!)
case CoreDataObject(NSManagedObject!)
}
class FormField {
var name: String
var value: Value?
// initializers...
}
Dieser Ansatz macht es jedoch furchtbar wortreich, auf Nichtigkeit zu prüfen. Wenn ich eine Alert-Ansicht für alle fehlenden Felder im Formular anzeigen möchte, muss ich in einer switch-Anweisung für jeden Fall eine Nullprüfung wiederholen:
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)
}
}
}
}
Ist es eine kürzere Möglichkeit, auf den zugeordneten Wert der Aufzählung zuzugreifen, unabhängig vom Typ? Wenn ich FormField.value zu einem @ macAny!
der obige Code wäre so einfach wie:
for field in self.fields {
if field.value == nil {
missingFields.append(field.name)
}
}