2010-10-08 59 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:[E名]原因:[E原因]用戶信息:[E USERINFO]提高]。 } }' – mrueg 2013-06-12 14:06:10

+0

任何想法如何在Swift中捕捉到這個異常? – devios1 2016-02-01 18:57:24