Использование KVC для генерации SQL? - PullRequest
2 голосов
/ 09 января 2009

Интересно, можно ли использовать KVC для генерации SQL. Я делаю легкий ORM; Я хочу сделать что-то вроде этого (псевдокод):

for key in object.getKeys
    sql = sql + formatField(key,objet.value[key]);

и получите:

INSERT INTO Table (Field1) VALUES (1);

Возможно ли это в Objective-C?

Ответы [ 3 ]

0 голосов
/ 09 января 2009

То, что вы хотите, звучит очень похоже на постоянные объекты SQLite. Это набор объективных классов, которые в основном делают то, о чем вы говорите. Подробности о классах и источнике (который может быть особенно интересен для вас, если вы хотите написать собственную версию) можно найти здесь: http://iphonedevelopment.blogspot.com/2008/08/sqlite-persistent-objects.html

0 голосов
/ 09 января 2009

Я нашел class_copyPropertyList, чтобы заполнить счет

Я получил это от постоянных объектов SQLite. Мне нужно только знать, как реализовать отношения;)

0 голосов
/ 09 января 2009

Код значения ключа на самом деле не может этого сделать, но вы можете использовать NSDictionary для этой задачи, если вы не хотите создавать слой доступа к данным, специфичный для ваших объектов. Вот быстрый пример для числовых полей:

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];
...