为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2019-12-07 16:31:28
我需要测试对象的类型是NSString还是UIImageView。我该怎么做?是否有某种“ isoftype”方法?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

如果您的对象是myObject,并且要测试以查看它是否是NSString,则代码将是:


[myObject isKindOfClass:[NSString class]]

同样,如果你想考myObject的UIImageView:


[myObject isKindOfClass:[UIImageView class]]


查看完整回答
反对 回复 2019-12-07
?
弑天下

TA贡献1818条经验 获得超7个赞

您可能会使用


- (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");    

}


查看完整回答
反对 回复 2019-12-07
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

运行一个简单的测试,我以为我要记录什么有效,什么无效。我经常看到人们在检查该对象的类是否是另一个类的成员或等于另一个类。


对于下面的行,我们有一些格式不正确的数据,可以是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没有。


查看完整回答
反对 回复 2019-12-07
  • 3 回答
  • 0 关注
  • 584 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信