Использование KVC для генерации SQL?
-
06-07-2019 - |
Вопрос
Интересно, можно ли использовать 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