Ich habe eine Situation, in der ich versuche, NSError
zu überschreiben, um mir eine Instanz eines Fehlers zu liefern. Ich werde viel wiederverwenden ."Kann 'init', das als nicht verfügbar markiert wurde, nicht überschreiben" verhindert das Überschreiben leerer Init
Mein Code arbeitete, bis ich Xcode aktualisiert und konvertiert Swift 2.
public class NAUnexpectedResponseTypeError: NSError {
public convenience init() {
let messasge = "The object fetched by AFNetworking was not of an expected type."
self.init(
domain: "MyDomain",
code: 6782,
userInfo: [NSLocalizedDescriptionKey: messasge]
)
}
}
Der Compiler sagt Cannot override 'init' which has been marked unavailable
. Ich war in der Lage, um es zu hacken um dies zu tun:
public class NAUnexpectedResponseTypeError: NSError {
public class func error() -> NSError {
let message = "The object fetched by AFNetworking was not of an expected type."
return NAUnexpectedResponseTypeError(
domain: "MyDomain",
code: 6782,
userInfo: [NSLocalizedDescriptionKey: message]
)
}
}
Also, meine Frage ist:
- Gibt es eine Möglichkeit eine leere
init
Methode in einer Situation wie diese hinzufügen? - Wenn ja zu 1, ist das aus irgendeinem Grund eine schlechte Idee?
- Ist meine Problemumgehung mit der Klassenmethode ein geeigneter Weg, um dieses Problem zu lindern?
EDIT:
Ich kam mit einem anderen Problem zu umgehen bis die Ich mag besser als die Abhilfe mit der Klassenmethode. Ich bin immer noch nicht glücklich, dass ich die leere init
Methode nicht überschreiben kann.
public class NAUnexpectedResponseTypeError: NSError {
public convenience init(message: String?) {
var errorMessage: String
if let message = message {
errorMessage = message
} else {
errorMessage = "The object fetched by AFNetworking was not of an expected type."
}
self.init(
domain: "MyDomain",
code: 6782,
userInfo: [NSLocalizedDescriptionKey: errorMessage]
)
}
}
Fügen Sie Ihrer Klasse mehr Code hinzu als hier gezeigt? Weil ich mich frage, warum eine Unterklasse überhaupt notwendig ist. –
@TomHarrington Würdest du etwas wie eine Erweiterung für NSError vorschlagen? – Jonathan