2014-10-15 14 views
6

In Swift, NSKeyedUnarchiver.unarchiveObjectWithData(data) genererà un'eccezione se i dati non possono essere archiviati.Catching NSKeyedUnità di archiviatore

Ci sono alcune situazioni in cui non abbiamo alcuna garanzia che i dati non siano danneggiati, come quando si legge da un file.

Non sono a conoscenza di un meccanismo try/catch in Swift, né che io conosca un metodo come canUnarchive che aiuti a prevenire l'eccezione.

Oltre all'implementazione del try/catch in Obj-C, esiste una soluzione Swift pura a questo problema?

+0

Ho lo stesso problema. Hai già trovato una soluzione? –

+0

no solution yet –

+0

Apple dovrebbe aver fatto un tentativo/cattura per swift ... –

risposta

6

Poiché unarchiveObjectWithData() non fa throw sua eccezione, attualmente non c'è modo di prenderlo in Swift (al momento della scrittura). L'SDK di iOS 9 ha aggiunto un nuovo metodo a throws un errore. È possibile prendere questo con il flusso di controllo do, try, catch.

do { 
    let result = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(NSData(...)) 
} catch { 
    print(error) 
}