在Objective-C中,如何测试对象类型?

我需要测试对象的类型是NSString还是UIImageView。我该怎么做?是否有某种“ isoftype”方法?



Smart猫小萌
浏览 609回答 3
3回答

白衣非少年

如果您的对象是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");    }

慕桂英546537

运行一个简单的测试,我以为我要记录什么有效,什么无效。我经常看到人们在检查该对象的类是否是另一个类的成员或等于另一个类。对于下面的行,我们有一些格式不正确的数据,可以是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没有。
打开App,查看更多内容
随时随地看视频慕课网APP