J'ai un code où je recevrai un objet de type inconnu. Il pourrait être un NSString
, NSNumber
, un scalaire enveloppé dans un NSValue
ou d'une autre classe:ObjC: différencier NSValue et NSNumber
-(void) doSomethingWith:(id) value {
if (<test-for-NSValue>) {
// Do something with a NSValue
} else {
// Do something else
}
}
Je dois identifier où il y a un type scalaire dans un NSValue.
Le problème consiste à identifier un scalaire enveloppé NSValue par rapport à un NSNumber. Comme NSNumber hérite de NSValue et que les deux sont des clusters de classe, j'ai du mal à les trier.
Alors:
[value isKindOfClass:[NSValue class]]
... voit NSNumbers comme NSValues.
[value isMemberOfClass:[NSValue class]]
... ne reconnaît pas NSValues car les instances sont des sous-types concrets.
Quelqu'un a eu une idée de comment faire cela?
Merci. J'ai fini avec cette solution aussi. :-) Un peu moche mais ça marche. – drekka