2014-10-15 5 views
6

В Swift NSKeyedUnarchiver.unarchiveObjectWithData(data) будет выдавать исключение, если данные не могут быть распакованы.Ловля исключения NSKeyedUnarchiver

Есть некоторые ситуации, когда мы не гарантируем, что данные не повреждены, например, при чтении из файла.

Я не знаю механизм try/catch в Swift и не знаю, как метод canUnarchive, который поможет предотвратить исключение.

Помимо реализации try/catch в Obj-C, существует ли решение Swift для решения этой проблемы?

+0

У меня такая же проблема. Вы уже нашли решение? –

+0

нет решения –

+0

Apple должна была попробовать/поймать для быстрой ... –

ответ

6

Потому что unarchiveObjectWithData() не throw его исключение, в настоящее время нет способа поймать его в Swift (с момента написания). В iOS 9 SDK добавлен новый метод NSKeyedUnarchiverdecodeTopLevelObject(), который теперь throws. Вы можете поймать это с помощью потока управления do, try, catch.

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