আমি পরীক্ষা প্রয়োজন কিনা বস্তুর ধরনের হয় NSString
বা UIImageView
। আমি কীভাবে এটি সম্পাদন করতে পারি? কিছু "আইসোফাইপ" পদ্ধতি আছে?
আমি পরীক্ষা প্রয়োজন কিনা বস্তুর ধরনের হয় NSString
বা UIImageView
। আমি কীভাবে এটি সম্পাদন করতে পারি? কিছু "আইসোফাইপ" পদ্ধতি আছে?
উত্তর:
যদি আপনার অবজেক্টটি হয় myObject
এবং আপনি এটি পরীক্ষা করে দেখতে চান এটি একটি কিনা NSString
, কোডটি হবে:
[myObject isKindOfClass:[NSString class]]
তেমনিভাবে, আপনি যদি myObject
একটি পরীক্ষা করতে চান UIImageView
:
[myObject isKindOfClass:[UIImageView class]]
আপনি সম্ভবত ব্যবহার করতে হবে
- (BOOL)isKindOfClass:(Class)aClass
এটি একটি পদ্ধতি NSObject
।
আরও তথ্যের জন্য NSObject
ডকুমেন্টেশন চেক করুন ।
আপনি এটি এইভাবে ব্যবহার করেন।
BOOL test = [self isKindOfClass:[SomeClass class]];
আপনি এ জাতীয় কিছু করার চেষ্টাও করতে পারেন
for(id element in myArray)
{
NSLog(@"=======================================");
NSLog(@"Is of type: %@", [element className]);
NSLog(@"Is of type NSString?: %@", ([[element className] isMemberOfClass:[NSString class]])? @"Yes" : @"No");
NSLog(@"Is a kind of NSString: %@", ([[element classForCoder] isSubclassOfClass:[NSString class]])? @"Yes" : @"No");
}
className
এটি ব্যবহার করবেন না , এটি ওএস এক্সে কাজ করতে পারে বা নাও করতে পারে, তবে এটি আইওএসে নেই এবং এটি এর জন্য ব্যবহার করার কথা নয়। এছাড়াও, NSLog
সেইগুলি সেগুলি করে না যা আমার মনে হয় আপনি তাদের বোঝাতে চেয়েছিলেন - তারা শ্রেণীর নাম (সর্বদা একটি স্ট্রিং) এবং কোডার বর্গটি পরীক্ষা করছে, আশ্চর্যের সাথে, আসল উপাদানটির শ্রেণির পরিবর্তে।
NSLog(@"Is of type: %@", [element class]);
আইওএস 7 এ কাজ করবে
যখন আপনি একটি সুপারক্লাস এবং উত্তরাধিকারী ক্লাসের মধ্যে পার্থক্য করতে চান আপনি ব্যবহার করতে পারেন:
if([myTestClass class] == [myInheritedClass class]){
NSLog(@"I'm the inheritedClass);
}
if([myTestClass class] == [mySuperClass class]){
NSLog(@"I'm the superClass);
}
ব্যবহার - (BOOL)isKindOfClass:(Class)aClass
এই ক্ষেত্রে 'সত্য' উভয় বার স্থাপিত কারণ inheritedClass এছাড়াও সুপারক্লাস এক ধরনের হবে।
isMemberOfClass:
NO
সাবক্লাসগুলির সাথে ডিল করার সময় ফিরে আসবে ।
একটি সহজ পরীক্ষা চালিয়ে, আমি ভেবেছিলাম আমি ডকুমেন্ট করব যা কাজ করে এবং কোনটি নয়। প্রায়শই আমি লোকেরা পরীক্ষার জন্য দেখতে পাই যে বস্তুর শ্রেণিটি অন্য শ্রেণির সদস্য বা অন্য শ্রেণীর সমান কিনা।
নীচের লাইনের জন্য, আমাদের কিছু খারাপভাবে তৈরি ডেটা রয়েছে যা একটি NSArray
, একটি NSDictionary
বা হতে পারে (null)
।
NSArray *hits = [[[myXML objectForKey: @"Answer"] objectForKey: @"hits"] objectForKey: @"Hit"];
এই পরীক্ষা করা হয় যে:
NSLog(@"%@", [hits class]);
if ([hits isMemberOfClass:[NSMutableArray class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isMemberOfClass:[NSMutableDictionary class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isMemberOfClass:[NSArray class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isMemberOfClass:[NSDictionary class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isKindOfClass:[NSMutableDictionary class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isKindOfClass:[NSDictionary class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isKindOfClass:[NSArray class]]) {
NSLog(@"%@", [hits class]);
}
if ([hits isKindOfClass:[NSMutableArray class]]) {
NSLog(@"%@", [hits class]);
}
isKindOfClass
বরং ভাল কাজ করেছেন যখন isMemberOfClass
না।
[object isKindOfClass:[ClassName class]]