1. 首先我们要知道,这使用的是运行时的反射机制

所以我们需要头文件 runtime.h

 1 - (BOOL) createTableByClassAttributes: (id)classModel {
 2
 3     // 得到类名 当表名、  也为了下边的反射、
 4     NSString *className = NSStringFromClass([classModel class]);
 5
 6     // 初始化一个装sql的可变string
 7     NSMutableString * sqlQuery = [NSMutableString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ (", className];
 8
 9     const char * cClassName = [className UTF8String];
10
11     id classM = objc_getClass(cClassName);
12     // i 计数 、  outCount 放我们的属性个数
13     unsigned int outCount, i;
14     // 反射得到属性的个数 、
15     objc_property_t * properties = class_copyPropertyList(classM, &outCount);
16
17     // 循环 得到属性名称  拼接数据库语句
18     for (i = 0; i < outCount; i++) {
19         objc_property_t property = properties[i];
20         // 获得属性名称
21         NSString * attributeName = [NSString stringWithUTF8String:property_getName(property)];
22
23         if (i == outCount - 1) {
24             [sqlQuery appendFormat:@"%@ TEXT)", attributeName];
25             break;
26         }
27         // 开始做拼接
28         [sqlQuery appendFormat:@"%@ TEXT, ", attributeName];
29     }
30
31     if ([self openDatabase] == YES) {
32
33         char * error;
34         int result = sqlite3_exec(_db, [sqlQuery UTF8String], NULL, NULL, &error);
35         if (result == SQLITE_OK) {
36             return YES;
37         } else {
38             NSLog(@"%@", [self errorWithMessage:[NSString stringWithFormat:@"%s", error]]);
39             return NO;
40         }
41     } else {
42         NSLog(@"%@", [self errorWithMessage:@"openDB Failure"]);
43         return NO;
44     }
45 }

// 当然 这是在数据库中写的, 你可能需要导入libsqlite这个库并创建数据库才能看见他的真正效果

ps: 运行时,我们可以得到某个类的全部属性,包括属性名称,值, 类型, 同事也可以得到方法的名称。

这里用的是纯c的语言。

这里讲反射, 主要是给大家讲一下这一种思路。

转载于:https://www.cnblogs.com/Dylan-Alice/p/Dylan.html

OC反射机制获得该类全部属性并创建数据表相关推荐

  1. java判断对象无数据_java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值...

    1.java利用反射机制判断对象的属性是否为空: Map validateMap = new LinkedHashMap(); validateMap.put("serial", ...

  2. java 反射 设置属性_Java通过反射机制动态设置对象属性值的方法

    /** * MethodName: getReflection * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7- ...

  3. ObjectC----NSObject常用方法和OC反射机制

    NSObject常用方法: ======================================================================= OC反射机制: 转载于:ht ...

  4. java 反射创建属性_使用Java反射机制确定基本数据类型属性

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java反射机制提供了一种强大的应用程序接口来帮助我们在运行时检测和执行对象上的操作.该机制允许程序员审视一个未知对象,并且获得它的属性,例如对象上的方法 ...

  5. 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等

    这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...

  6. 通过java反射机制获取该类的所有属性类型、值。

    转自:http://blog.sina.com.cn/s/blog_3c62c21f01011xci.html 方法使用了这俩个包下的 field 和method import java.lang.r ...

  7. 通过java类的反射机制获取类的属性类型

    import java.lang.reflect.Field; import java.lang.reflect.Method; Class<?> cls=Class.forName(cl ...

  8. java的反射机制--关于类中属性的反射。

    之前对于反射的理解只是认为,通过一个类的名字动态创建出一个类来. 其实,知道类中属性的名字也可以,动态的得到该属性. 比如 class A{ S = "abc": } 我们可以动态 ...

  9. Java反射机制获取系统@Hide属性

    如获取状态条高度 在源码程序中代码: height= getResources().getDimensionPixelSize(com.android.internal.R.dimen.status_ ...

最新文章

  1. oracle散列,在Python中散列一个整数,以匹配Oracle的标准_散列
  2. python中字典dict的中的copy和deepcopy
  3. Linux网络相关、firewalld、netfilter及其5表5链、iptables语法
  4. android5.0(Lollipop) BLE Peripheral深入理解系统篇之提高篇
  5. 曾几何时,我们炼的不是丹,是特征
  6. java中Locks的使用
  7. React Native使用指南-在设备上运行
  8. 职业规划纵向横向_收下这份《职业规划喂饭式指南》
  9. 华为给力!算力最强AI处理器在中国!
  10. linux 从github拉取更新_关于拉取请求
  11. 品牌就是复购,运营就是零售
  12. 哨兵二号数据下载的手把手指导以及12.5米DEM数据下载
  13. CDN回源原理和CDN多级缓存
  14. Kali学习 | 无线渗透:7.5 Gerix 破解 WEP
  15. 在群晖上搭建基于 PostgreSQL 的 Joplin Server
  16. 计算一个字符串里面特定字符的个数
  17. 计算机网络-数据链路层(广域网及相关协议(PPP协议帧格式,HDLC协议)数据链路层设备(网桥,交换机))
  18. 数据库原理 概念结构设计的方法
  19. 微信小程序Vant Weapp里面Calendar 日历组件不显示的问题
  20. 量子计算机治愈癌症,如果量子计算机实现了,癌症可以治愈吗?

热门文章

  1. 从下往上看--新皮层资料的读后感 第一部分:皮层细胞
  2. Windows7中右键菜单无新建文本文档选项的解决办法(注册表)
  3. 无锡给的sql excel转换
  4. 《Unix环境高级编程》学习笔记:从点到面
  5. ten sentences(1-10)
  6. C++ 刷算法题笔记
  7. PAT1036.跟奥巴马一起编程
  8. 问题 L: A+B Problem (IV) : Input/Output Practice 山东科技大学OJ C语言
  9. python github登陆_利用Python模拟GitHub登录!
  10. python传文件_Python实现Windows和Linux之间互相传输文件(文件夹)的方法