iPhone键值编码——测试是否存在键值

iPhone键值编码——测试是否存在键值,iphone,key-value-coding,Iphone,Key Value Coding,iPhone键值编码是否有办法测试类是否接受给定的键 也就是说,在不实现目标类的valueForUndefinedKey:或setValue:forUndefinedKey:方法的情况下,我希望能够执行以下操作: if ([targetObject knowsAboutKey: key]) { [targetObject setValue: value forKey: key]; } setValue:forUndefinedKey:的默认实现引发NSUndefinedKeyExcept

iPhone键值编码是否有办法测试类是否接受给定的键

也就是说,在不实现目标类的valueForUndefinedKey:或setValue:forUndefinedKey:方法的情况下,我希望能够执行以下操作:

if ([targetObject knowsAboutKey: key])  {
  [targetObject setValue: value forKey: key];
}

setValue: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]; 
    } 
}

实际上,NSUndefinedKeyException不是一个类,而是一个字符串。因此,为了做正确的事情,我使用了
@catch(NSException*e){if([[e name]isEqualToString:NSUndefinedKeyException]){;//handle}else{[[NSException exception withname:[e name]reason:[e reason]userInfo:[e userInfo]]raise}
知道如何在Swift中捕获此异常吗??