我想知道是否可以使用 KVC 生成 SQL。我正在做一个轻量级的 ORM;我想做这样的事情(伪代码):
for key in object.getKeys
sql = sql + formatField(key,objet.value[key]);
并得到:
INSERT INTO Table (Field1) VALUES (1);
这在Objective-C中可能吗?
我想知道是否可以使用 KVC 生成 SQL。我正在做一个轻量级的 ORM;我想做这样的事情(伪代码):
for key in object.getKeys
sql = sql + formatField(key,objet.value[key]);
并得到:
INSERT INTO Table (Field1) VALUES (1);
这在Objective-C中可能吗?
键值编码实际上无法做到这一点,但如果您不想为您的对象构建特定的数据访问层,您可以使用 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 Persistent Objects 非常相似。这是一组objective-c 类,基本上可以完成您所说的工作。有关类和源代码的详细信息(如果您想编写自己的版本,您可能会特别感兴趣)可以在这里找到:http: //iphonedevelopment.blogspot.com/2008/08/sqlite-persistent-objects.html
我发现class_copyPropertyList
这样填单。
我从 SQLite Persistent Objects 中得到它。我只需要知道如何实现关系;)