दो तरीकों में आपकी रुचि है के होते हैं:
isKindOfClass:
रिसीवर पूछता है कि यह एक वर्ग या एक उपवर्ग, जहां isMemberOfClass:
के रूप में रिसीवर पूछता है अगर यह वर्ग है , लेकिन उप-वर्ग नहीं है। उदाहरण के लिए, मान लीजिए कि आपके पास ऑब्जेक्ट क्लास नामक NSManagedObject
सबक्लास है।
if([self.objectClass isKindOfClass:[NSManagedObject class]]) {
// This will return YES
}
else if ([self.objectClass isMemberOfClass:[NSManagedObject class]]) {
// This will return NO
}
पहले बयान देता है हाँ (या सच है, या 1) क्योंकि क्लास NSManagedObject का एक उपवर्ग है। दूसरा कथन NO (या झूठी, या 0) देता है क्योंकि यह उप-वर्ग है, यह कक्षा ही नहीं है।
अद्यतन:
if ([self.class isKindOfClass:self.class])
झूठी वापसी होगी: मैं नीचे एक टिप्पणी, जिसमें कहा गया है इस व्याख्या गलत है क्योंकि निम्न कोड पंक्ति को प्रकाश में लाने के लिए इस उत्तर को अपडेट करना चाहते । यह सही है, यह झूठी वापसी होगी। लेकिन यह उदाहरण गलत है। एनएसओब्जेक्ट से प्राप्त हर वर्ग भी NSObject प्रोटोकॉल के अनुरूप है। इस प्रोटोकॉल के भीतर class
नामक एक विधि है जो "रिसीवर के वर्ग के लिए क्लास ऑब्जेक्ट देता है"। इस मामले में, self.class जो भी वर्ग वस्तु स्वयं देता है देता है। हालांकि, isKindOfClass:
पर दस्तावेज़ीकरण से -
एक बूलियन मान कि यह दर्शाता है कि रिसीवर किसी वर्ग का एक उदाहरण या किसी भी वर्ग कि उस वर्ग से विरासत का एक उदाहरण है दिखाता है।
इस प्रकार, इस संदेश को self.class (जो एक वर्ग है) भेजने के झूठे रिटर्न क्योंकि यह एक वर्ग का एक उदाहरणके लिए भेजा जाना, एक वर्ग के लिए ही नहीं होती है।
आप
if([self isKindOfClass:self.class])
के उदाहरण को बदलते हैं आप हाँ मिल जाएगा (या सच है, या 1)।
मेरा जवाब यहाँ मानती है कि self.objectClass एक उदाहरण क्लास नामित करने के लिए एक्सेसर है। निश्चित रूप से, यह एक वर्ग के उदाहरण के लिए एक भयानक नाम है, लेकिन सवाल यह नहीं था कि "मैं कक्षाओं के उदाहरण कैसे नाम दूं"।
आप '-isKindOfClass की तलाश में हो सकता है:' विधि: https://developer.apple।कॉम/लाइब्रेरी/मैक/# प्रलेखन/कोको/संदर्भ/फाउंडेशन/प्रोटोकॉल/एनएसओब्जेक्ट_Protocol/संदर्भ/NSObject.html –
नीचे दिए गए मेरे उत्तर में स्पष्टता के लिए ... objectClass क्या है? क्या वह वास्तविक वर्ग का नाम है? एक वर्ग का एक उदाहरण? कृपया नहीं कि अर्थशास्त्र का सुझाव है कि कक्षाओं को पहले पूंजी पत्र के साथ नामित किया जाए, और लोअरकेस के साथ उदाहरण। तो, MyClass एक वर्ग है, और instanceOfMyClass MyClass का एक उदाहरण है। – jmstone617
कक्षा _objectClass किसी प्रकार का क्लास ऑब्जेक्ट संदर्भ है जो RestKit इसका ऑब्जेक्ट इंस्टेंस इंस्टेंट करने के लिए उपयोग कर रहा है। –