2010-10-08 4 views
7

Имеет ли iPhone-ключ-значение кодировку возможность проверить, будет ли класс принимать данный ключ?Кодирование ключа для iPhone - проверка наличия ключа

То есть, без реализации valueForUndefinedKey: или SetValue: forUndefinedKey: метод целевого класса, я хочу, чтобы иметь возможность сделать что-то вроде этого:

реализацию SetValue
if ([targetObject knowsAboutKey: key]) { 
    [targetObject setValue: value forKey: key]; 
} 

ответ

3

по умолчанию: forUndefinedKey: прибавки NSUndefinedKeyException. Вы можете окружить попытку в блоке try/catch:

@try{ 
    [targetObject setValue:value forKey:key]; 
} @catch (NSException *e) { 
    if ([[e name] isEqualToString:NSUndefinedKeyException]) { 
    NSLog(@"oh well... handle the case where it has no key here."); // handle 
    } else { 
     [[NSException exceptionWithName:[e name] 
           reason:[e reason] 
           userInfo:[e userInfo]] 
     raise]; 
    } 
} 
+3

Собственно, NSUndefinedKeyException - это не класс, а просто строка. Итак, для правильной работы я использую '@catch (NSException * e) { if ([[e name] isEqualToString: NSUndefinedKeyException]) { \t \t; // описатель \t \t} \t \t еще { [[NSException exceptionWithName: [е] название причина: [е причина] USERINFO: [е USERINFO]] повышать]; } } ' – mrueg

+0

Любая идея, как поймать это исключение в Swift ?? – devios1

Смежные вопросы