Récupérer les noms des Ivar

Bonjour à  tous,

Je cherche un moyen simple (ou complexe, ça me dérange pas en fait), de récupérer toutes les Ivar d'une classe, en oubliant sa superclass si possible.
En gros, j'ai des modèles créés automatiquement via un générateur SOAP (à  qui on passe une enveloppe WSDL et qui génère tous les fichiers qu'il faut, y comprend la couche modèle).
Cependant, on a un back SQLite côté iOS.. on aimerait donc faire une sorte de méthode "générique" qui permettrait de générer une requête INSERT en passant simplement une instance d'une classe model.
L'idée serait donc, via cette classe, de récupérer toutes les Ivar (le générateur produit Ivar+properties) et produite la requête d'insert sous forme de NSString. Les noms des Ivars me suffisent, car via le runtime je peux récupérer leurs valeurs en utilisant l'objet (instance d'une class model).
Tout ça me permettra d'éviter de modifier les requêtes d'insert au cas où les couches model sont amenés à  changer...

Si vous avez une idée.. je suis preneur. Et si vous avez mieux à  proposer aussi !
Pour info, on utilise CoreData. Le soucis c'est qu'il faudrait instancier une entité + toutes ses relations avant de l'insérer en base.. On pensait donc insérer directement en base en utilisant SQLite pour le coup. (On a quand même vérifié que c'était possible avant)

Réponses

  • LexxisLexxis Membre
    21:34 modifié #2
    Bonjour,

    As tu regarder du coté des fonctions du runtime, class_copyIvarList, etc... En même temps je ne sais pas si le runtime ios est aussi accessible que celui de Mac OS X...

    Juste pour infos quel est le nom du générateur SOAP que tu utilises ?
  • laudemalaudema Membre
    septembre 2011 modifié #3
    Grillé :)
    Pour n'avoir pas cherché tout à  fait en vain : le bout de code apple qui va avec (mais les properties de Core Data sont elles les mêmes ?) et la page de référence du runtime
  • AliGatorAliGator Membre, Modérateur
    21:34 modifié #4
    Bah utilises les méthodes du runtime c'est fait pour ça y'a déjà  tout ce qu'il faut et c'est plutôt simple à  utiliser.

    Voir le Objective-C Runtime Reference ici

    [EDI]Bon je crois qu'on s'est grillés mutuellement :D
  • 21:34 modifié #5
    J'avais regardé via le Runtime oui, mais j'ai happé cette méthode, qui de part son nom ne me disait pas grand chose  :o
    Merci
  • LexxisLexxis Membre
    21:34 modifié #6

    Mais quel est le générateur que tu utilises ?
    Je travaille actuellement sur un projet où j'utilise gSOAP (qui génère les classes C++ et tout ce qu'il faut), mais vu la complexité des WSDL utilisé au final j'arrive à  un librairie de 10 Mo compilé (optimisé en plus !). Même si tout fonctionne je suis à  la recherche d'une solution moins gourmande...
  • 21:34 modifié #7
    Tu as WSDL2ObjC mais moi j'utilise un site en alpha:
    http://sudzc.com/

    C'est le seul qui fonctionne et qui me pond de l'objective-c pour la couche model. De là  à  dire que c'est beau, NO. Mais ça fonctionne.
    Par contre tu auras plein de fuites mémoire à  corriger..
  • LexxisLexxis Membre
    21:34 modifié #8
    Merci.
    Je vais voir ça immédiatement!
Connectez-vous ou Inscrivez-vous pour répondre.