Исключения target-c, не обнаруженные в swift 3, делают обработчик catch

Я использую библиотеку Objective-C в моей быстрой базе кода. Библиотека может выдать исключение. К сожалению, исключение не попадает в Swift 3. Как обойти эту проблему?

1 ответ

В общем случае не стоит использовать обработку исключений Objective C, но иногда это необходимо.;)

Быстрая обработка исключений полностью отличается от Objective-C. Вы не можете поймать исключения Objective-C в Swift напрямую. Вместо этого вы должны написать оболочку Objective-C, например:

@implementation NSDictionary(NoException)

- (id)noExceptionValueForKey:(NSString *)inKey {
    @try {
        return [self valueForKey:inKey];
    }
    @catch(NSException *anException) {
        // More exception handling if neccessary
        return nil;
    }
}

@end

Из Свифта вам следует позвонить noExceptionValueForKey: вместо valueForKey:,

Другие вопросы по тегам