6
votes

Comment voir si une classe a une propriété?

Je analyse du XML et je mettez à jour le serveur assez fréquemment avec de nouvelles fonctionnalités. Donc, quand j'ajoute une nouvelle balise ou quelque chose, mon application, qui analyse les panneaux de données lorsque j'appelle parce que l'actualisation de l'environnement ne fait pas encore partie de ma classe. Est-ce qu'il y a de toute façon pour vérifier si une classe a une propriété ou devrais-je simplement attraper l'exception qui est soulevée? xxx

merci


0 commentaires

3 Réponses :


8
votes

Si vous n'avez pas remplacé le setter standard et les noms getters, vous pouvez utiliser:

 if ([object respondsToSelector:@selector(hasProp)]) {


3 commentaires

Pas toujours valide, car une propriété peut définir différentes méthodes pour son getter et son setter.


@property (assigné, getter = isopen) bool ouvert; - un modèle commun


@Jonathan Grynspan: Merci pour votre remarque. J'ai édité ma réponse pour faire plus précis et inclus votre perspicacité!



21
votes

Très simple:

if (class_getProperty([object class], "propertyName")) {
    // it has that property!
}


1 commentaires

Pour iOS, vous devez ajouter #import dans votre fichier



0
votes

Tout d'abord, vous devez capitaliser la première lettre de votre nom de propriété.

if ([object respondsToSelector:propertySetter])
{
    [object setValue:value forKey:propertyName];
}


0 commentaires