Vous utilisez KVC pour générer du SQL?
-
06-07-2019 - |
Question
Je me demande s’il est possible d’utiliser KVC pour générer du SQL. Je fais un ORM léger; Je veux faire quelque chose comme ça (pseudocode):
for key in object.getKeys
sql = sql + formatField(key,objet.value[key]);
et obtenez:
INSERT INTO Table (Field1) VALUES (1);
Est-ce possible en Objective-C?
La solution 3
J'ai trouvé class_copyPropertyList
afin de remplir la facture.
Je l’obtiens à partir d’objets persistants SQLite. J'ai seulement besoin de savoir comment mettre en œuvre les relations;)
Autres conseils
Le codage par valeur de clé ne peut pas vraiment le faire, mais vous pouvez utiliser un NSDictionary pour cette tâche si vous ne souhaitez pas créer de couche d'accès aux données spécifique à vos objets. Voici un exemple rapide pour les champs numériques:
for ( NSString *key in [dictionary allKeys] )
{
fields = [fields stringByAppendingFormat:@", %@", key];
values = [values stringByAppendingFormat:@", %ld", (long)[[dictionary objectForKey:key] integerValue]];
}
NSString *sql = [NSString stringWithFormat:@"INSERT INTO Table (%@) VALUES (%@);", fields, values];
Ce que vous voulez est très similaire à SQLite Persistent Objects. C'est un ensemble de classes d'objectifs-c qui font essentiellement ce dont vous parlez. Vous trouverez des détails sur les classes et le source (qui peuvent vous intéresser particulièrement si vous voulez écrire votre propre version) ici: http://iphonedevelopment.blogspot.com/2008/08/sqlite-persistent-objects.html