Ich habe eine Antwort enum für meinen Netzwerk-Rückgabewert und eine Funktion, die eine AnyObject
zurückgeben sollte, weil es wird ein Wert eines Schlüssels sein muss.Probleme mit zugeordneten Werten von enums
enum Response {
case Success(value:AnyObject)
case Failure(errorNumber: Int)
func getResponse() -> AnyObject{
switch self {
case .Success(value: AnyObject):
return value
case .Failure(errorNumber: Int):
return errorNumber
}
}
}
die unten angegebenen Fehler generieren: Ich habe nicht den eigentlichen Text für die Fehler hinzufügen, weil ich Ihnen zeigen wollte, dass es noch nicht Syntax für errornumber Hervorhebung macht und Wert
Schließlich in meinem Code würde ich diesen Wert zu einem AnyObject
zuweisen müssen, die später, dass ANYOBJECT wird [NSObject : AnyObject]
downcasted werden So hätte ich:
Das erste Code-Snippet ist mein neuer Code, aber die internen Frameworks sind Codezeilen, die ich nicht ändern kann.
FYI Unser Code ist immer noch mit Swift2 :(
Ihre Syntax ist falsch, sollte es sein 'Fall .Success (let-Wert) : ' –
Beseitigen Sie die' getResponse() '-Funktion Behandeln Sie die Enum für was es ist, einen Datenwert oder einen Fehler.Recombining diese zurück in einen einzigen Rückgabewert vom Typ Any/AnyObject wirft Informationen und verursacht später Typecasting Hölle. –
Nur weil du 'AnyObject' später benutzt, bedeutet das nicht, dass' Response' darauf eingeht - ich würde es empfehlen B. "Response" mit einem 'Case Success (Wert: T)' (und wie Price sagt, sollten Sie die Fälle nicht miteinander kombinieren - was ist, wenn ein 'Int' ein gültiger Erfolgswert ist?). –
Hamish