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? merci p> p>
3 Réponses :
Si vous n'avez pas remplacé le setter standard et les noms getters, vous pouvez utiliser:
if ([object respondsToSelector:@selector(hasProp)]) {
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; code> - 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é!
Très simple:
if (class_getProperty([object class], "propertyName")) {
// it has that property!
}
Pour iOS, vous devez ajouter #import
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];
}