আমি পরীক্ষা প্রয়োজন কিনা বস্তুর ধরনের হয় 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]]