Вопрос

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

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

и получите:

INSERT INTO Table (Field1) VALUES (1);

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

Это было полезно?

Решение 3

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

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

Другие советы

Код значения ключа не может этого сделать, но вы можете использовать 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];

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top