Jam*_*ore 548 objective-c ios
我需要测试对象是类型NSString还是UIImageView.我怎么能做到这一点?是否有某种类型的"isoftype"方法?
mmc*_*mmc 861
如果你的对象是myObject,并且你想测试它是否是一个NSString,代码将是:
[myObject isKindOfClass:[NSString class]]
Run Code Online (Sandbox Code Playgroud)
同样,如果你想测试myObject一个UIImageView:
[myObject isKindOfClass:[UIImageView class]]
Run Code Online (Sandbox Code Playgroud)
小智 54
你可能会用
- (BOOL)isKindOfClass:(Class)aClass
Run Code Online (Sandbox Code Playgroud)
这是一种方法NSObject.
有关更多信息,请查看NSObject文档.
这就是你如何使用它.
BOOL test = [self isKindOfClass:[SomeClass class]];
Run Code Online (Sandbox Code Playgroud)
你也可以尝试做这样的事情
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");
}
Run Code Online (Sandbox Code Playgroud)
Yed*_*edy 15
如果想要在superClass和inheritedClass之间有所不同,可以使用:
if([myTestClass class] == [myInheritedClass class]){
NSLog(@"I'm the inheritedClass);
}
if([myTestClass class] == [mySuperClass class]){
NSLog(@"I'm the superClass);
}
Run Code Online (Sandbox Code Playgroud)
- (BOOL)isKindOfClass:(Class)aClass在这种情况下使用会导致两次都为TRUE,因为inheritedClass也是一种superClass.
Ale*_*one 11
运行一个简单的测试,我想我会记录哪些有效,哪些无效.通常我会看到人们检查对象的类是否是另一个类的成员或者是否等于另一个类.
对于下面的行,我们有一些结构不良的数据,可以是a NSArray,a NSDictionary或(null).
NSArray *hits = [[[myXML objectForKey: @"Answer"] objectForKey: @"hits"] objectForKey: @"Hit"];
Run Code Online (Sandbox Code Playgroud)
这些是执行的测试:
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]);
}
Run Code Online (Sandbox Code Playgroud)
isKindOfClass工作得相当好,而isMemberOfClass没有.
如果要检查原始数据类型的类型,可以使用以下代码.
// Returns 0 if the object type is equal to double
strcmp([myNumber objCType], @encode(double))
Run Code Online (Sandbox Code Playgroud)
很简单,[您的对象类]它将返回您的对象的类名称。
| 归档时间: |
|
| 查看次数: |
238943 次 |
| 最近记录: |