Использование KVC для генерации SQL?

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

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

и получить:

INSERT INTO Table (Field1) VALUES (1);

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


person mamcx    schedule 09.01.2009    source источник


Ответы (3)


Key Value Coding на самом деле не может этого сделать, но вы можете использовать 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];
person Marc Charbonneau    schedule 09.01.2009

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

person Adam Byram    schedule 09.01.2009

Я нашел class_copyPropertyList так что заполните счет.

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

person mamcx    schedule 09.01.2009