Ho una situazione in cui sto cercando di ignorare NSError
per fornirmi un'istanza di un errore che sto per riutilizzare molto ."Impossibile sovrascrivere 'init' che è stato contrassegnato come non disponibile" previene l'override vuoto init
Il mio codice stava lavorando fino a quando ho aggiornato Xcode e convertito in 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]
)
}
}
Il compilatore dice Cannot override 'init' which has been marked unavailable
. Sono stato in grado di incidere intorno ad esso in questo modo:
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]
)
}
}
Quindi, la mia domanda è:
- Esiste un modo per aggiungere un metodo vuoto
init
in una situazione come questa? - Se si a 1, è una cattiva idea per qualche motivo?
- La mia soluzione alternativa al metodo di classe è un modo appropriato per mitigare questo problema?
EDIT:
mi si avvicinò con un'altra soluzione che mi piace di più rispetto alla soluzione con il metodo della classe. Non sono ancora felice di non poter ignorare il metodo vuoto init
.
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]
)
}
}
Stai aggiungendo altro codice alla tua classe oltre a ciò che viene mostrato qui? Perché mi sto chiedendo perché una sottoclasse sia addirittura necessaria. –
@TomHarrington Suggeriresti qualcosa come un'estensione per NSError? – Jonathan