2010-10-08 18 views
7

के अस्तित्व के लिए परीक्षण क्या आईफोन कुंजी-मूल्य-कोडिंग का परीक्षण करने का कोई तरीका है कि कोई कक्षा किसी दिए गए कुंजी को स्वीकार करेगी या नहीं?आईफोन कुंजी-मूल्य कोडिंग - कुंजी

यही है, valueForUndefinedKey को लागू करने के बिना: या setValue: forUndefinedKey:

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

उत्तर

3

डिफ़ॉल्ट कार्यान्वयन: forUndefinedKey: लक्ष्य वर्ग की विधि, मैं इस तरह कुछ करने के लिए सक्षम होना चाहते हैं उठाता एक NSUndefinedKeyException। आप कोशिश/पकड़ ब्लॉक में प्रयास को घेर सकते हैं:

@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) { का उपयोग करता हूं (यदि [[e name] isEqualToString: NSUndefinedKeyException]) { \t; // संभाल \t \t} \t बाकी \t { [[NSException exceptionWithName: [ई नाम] कारण: [ई कारण] userInfo: [ई userInfo]] जुटाने]; } } ' – mrueg

+0

कोई विचार स्विफ्ट में इस अपवाद को कैसे पकड़ें ?? – devios1

संबंधित मुद्दे