开发中我们经常会创建一些类,这些类一般只作为数据的存储对象,当我们想要把这些类对象存储到数据库中的时候,这时候我们就要动态把这个对象中的所有成员属性及所对应的值作为键值对的形式转换为字典,然后更加方便的利用FMDB存储到数据库中。
方法如下,返回的字典便是我们所需要的
+ (NSDictionary *)transformObject:(id)obj
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
unsigned int varCount = 0;
Ivar *variables = class_copyIvarList([obj class], &varCount);
for (int i = 0; i < varCount; i++) {
Ivar var = variables[i];
const char *varName_char = ivar_getName(var);
NSString *varName_NSString = [NSString stringWithUTF8String:varName_char];
id value = [obj valueForKey:varName_NSString];
//去除变量前的"_"
[dict setValue:value forKey:[varName_NSString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"_"]]];
}
return dict;
}