Ho due metodi nella libreria oggettivo-c che, dopo la conversione in Swift, sembrano avere la stessa firma del metodo. Essi sono i seguenti in Objective-C:Le firme del metodo Objective-C sono le stesse dopo la conversione Swift
- (void)doSomething:(UIViewController *)viewController __attribute__((deprecated));
- (BOOL)doSomething:(UIViewController *)viewController error:(NSError **)error;
Da quello che ho letto la conversione su Swift di metodi che utilizzano NSErrors + valori di ritorno BOOL in Objective-C, questi metodi finiscono per avere i seguenti Swift Metodo Firme:
func doSomething(viewController: UIViewController)
func doSomething(viewController: UIViewController) throws
Poiché la prima chiamata viene effettivamente sconsigliato in Objective-C, c'è un modo per forzare le chiamate effettuate a questo metodo per usare la seconda firma (quella che posso approfittare degli errori gettati)?
Sto cercando di chiamare il metodo nel modo seguente:
do {
try myObjectInstance.doSomething(self)
} catch let error as NSError {
print(error)
}
Questo approccio sembra di default alla prima dichiarazione, che mi sta dando un avvertimento che a) il metodo è deprecato e b) non c'è niente da catturare perché non vengono lanciati errori.
Oh, un aggiornamento della libreria sarebbe un peccato se questo è l'unico modo in cui questo può essere fatto. Detto questo, meglio una soluzione che nessuna! Grazie!! – Maixy
Presumibilmente, puoi anche creare un metodo Obj-C separato (in una categoria o qualcosa) che è incluso nel target Swift solo per aiutare con l'interoperabilità, e chiama quello appropriato. – jtbandes