Ich habe einen einfachen Test durchgeführt und wollte dokumentieren, was funktioniert und was nicht. Oft sehe ich Leute, die prüfen, ob die Klasse des Objekts ein Mitglied der anderen Klasse ist oder gleich der anderen Klasse ist.
Für die folgende Zeile haben wir einige schlecht geformte Daten, die ein Problem darstellen können. NSArray
an NSDictionary
o (null)
.
NSArray *hits = [[[myXML objectForKey: @"Answer"] objectForKey: @"hits"] objectForKey: @"Hit"];
Dies sind die Tests, die durchgeführt wurden:
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
recht gut funktioniert, während isMemberOfClass
hat nicht.
36 Stimmen
Ja, die gibt es:
[object isKindOfClass:[ClassName class]]
0 Stimmen
Siehe: Was ist in Objective-C das Äquivalent zum Java-Schlüsselwort "instanceof"?