ios怎么自动生成model里面的属性代码

小姜丝 2024-12-03 06:55:57
最佳回答
一、获取model的实体属性1.要想遍历model类的属性,首先得通过runtime来获取该model类有哪些属性,输出model的所有属性的值可不像遍历dictionary和array那样一个for循环搞定的,下面的方法是通过runtime来获取model类的属性字符串,并以数组的形式返回。代码如下:///通过运行时获取当前对象的所有属性的名称,以数组的形式返回- (nsarray *) allpropertynames{ ///存储所有的属性名称 nsmutablearray *allnames = [[nsmutablearray alloc] init]; ///存储属性的个数 unsigned int propertycount = 0; ///通过运行时获取当前类的属性 objc_property_t *propertys = class_copypropertyl**t([self class], &propertycount); //把属性放到数组中 for (int i = 0; i < propertycount; i ++) { ///取出第一个属性 objc_property_t property = propertys[i]; const char * propertyname = property_getname(property); [allnames addobject:[nsstring stringwithutf8string:propertyname]]; } ///释放 free(propertys); return allnames;}2.获取到model类的属性方法后需要把属性字符串生成get方法,我们可以执行get方法来获取model属性的值,下方的方法是根据属性字符串来获取属性的getter方法,oc中属性的getter方法的名字和属性的名字是一致的,生成getter方法比较简单,具体代码如下:#pragma mark -- 通过字符串来创建该字符串的setter方法,并返回- (sel) creatgetterwithpropertyname: (nsstring *) propertyname{ //1.返回get方法: oc中的get方法就是属性的本身 return nsselectorfromstring(propertyname);}二、get方法的执行接下来要做的是通过runtime来执行getter方法,这一块需要通过方法的签名来执行getter方法。在oc的运行时中要执行的方法需要传入参数或者需要接收返回值时,需要通过方法的签名来调用方法。下面的代码就是创建方法的签名,然后通过签名来获取调用的对象,在下边的方中回调用上述两个方法在通过方法的签名来获取model属性的值,具体代码如下:- (void) d**playcurrentmodleproperty{ //获取实体类的属性名 nsarray *array = [self allpropertynames]; //拼接参数 nsmutablestring *resultstring = [[nsmutablestring alloc] init]; for (int i = 0; i < array.count; i ++) { //获取get方法 sel getsel = [self creatgetterwithpropertyname:array[i]]; if ([self respondstoselector:getsel]) { //获得类和方法的签名 nsmethodsignature *signature = [self methodsignatureforselector:getsel]; //从签名获得调用对象 nsinvocation *invocation = [nsinvocation invocationwithmethodsignature:signature]; //设置target [invocation settarget:self]; //设置selector [invocation setselector:getsel]; //接收返回的值 nsobject *__unsafe_unretained returnvalue = nil; //调用 [invocation invoke]; //接收返回值 [invocation getreturnvalue:&returnvalue]; [resultstring appendformat:@"%@\n", returnvalue]; } } nslog(@"%@", resultstring);}执行上述方法就可以输入model中的属性的值,下面就在main函数中对model赋完值后调用上述方法输出一下model的属性值,调用代码如下所示:beautifulgirlmodel *beautifulgirl = [beautifulgirlmodel modelwithdictionary:data]; [beautifulgirl d**playcurrentmodleproperty];运行结果如下,下面的输出结果是model中属性的值。 20210311
汇率兑换计算器

类似问答
  • 怎样获得自动登陆斗鱼**的源代码?
    • 2024-12-03 22:34:07
    • 提问者: 未知
    如果浏览器就写插件,j**ascript,chrome,然后**ocr。如果是爬数据就用python,但可能会被封ip。斗鱼,源代码,**,账号密码:怎样获得自动登陆斗鱼**的源代码?
  • ios代码已经交给测试了!发现有严重的bug怎么解决
    • 2024-12-03 01:30:19
    • 提问者: 未知
    要不在提交下, 要不就等测试部 测试出bug后 你再改就是
  • ios开发 怎样让block按照代码顺序执行。
    • 2024-12-03 19:43:24
    • 提问者: 未知
    比如你要在block完成后执行方法a,就把方法a写进block里.
  • ios纯代码手动适配5,6共用一套代码怎么写
    • 2024-12-03 20:31:41
    • 提问者: 未知
    可以用autolayout,或者直接计算坐标,size。我不懂autolayout。一直用计算坐标,size。计算的时候宽度不是写死的320,高度也不是写死的480,而是取 [[u**creen mainscreen]bounds].size.width [[u**creen mainscreen]bounds].size.height来做计算,判断。比如一个控件占屏幕宽度一半,你就用这个宽度.....
  • 如何利用vba代码自动排名
    • 2024-12-03 10:01:11
    • 提问者: 未知
    11.点击鼠标右键,选择“新建”选项,然后点击“mircosoft office excel 2007”选项新建一个excel文件。22.制作表格、录入相关数据。33.选择界面上方的“开发工具”选项,然后点击“宏”选项。44.写明vba代码名称,然后点击“创建”按钮。 55.写入指定vba代码。66.点击插入一个按钮控件,并命名为“自动排名”。77.选中“自动排名”控件,然后点击鼠标右键,选择“指...
  • excel怎么取消自动生成日期格式
    • 2024-12-03 01:45:11
    • 提问者: 未知
    工具/原料:电脑、excel(文中版本为excel 2010) 步骤: 方法一、避免直接输入时出现这种情况,可以先选择文本输入,再输入数据。br/>方法二、 <br/>1、如果数据很多,或者...
  • 【aso】ios 代码里面可以写非相关**吗?
    • 2024-12-03 03:00:53
    • 提问者: 未知
    1:如果提交非相关的关键词到app store,也是可以的。一般情况下,针对一款应用,开发者会优先选.
  • 在j**a中是怎么随机生成的(代码): 例如:ds201102236321
    • 2024-12-03 19:38:08
    • 提问者: 未知
    math类里面有个random方法可以随机产生数据不过产生的都是0~1之间的~希望能对你有帮助~~
  • 怎么把一张jpg图片生成代码?
    • 2024-12-03 14:49:03
    • 提问者: 未知
    点html,然后进入页面后,点左上角的拆分,然后在非代码页面插入图片,然后在左面就会出现一句代码,大概就是你要的。
  • 智能键盘的股票代码怎么加不到自选股里面去呢
    • 2024-12-03 07:47:52
    • 提问者: 未知
    1、在通信达股票软件中,自选股板块的股票都是带有股票代码的,不需要添加的。如果要把选好的股票代码的股票加入自选股板块中,就要在自选股板块中输入相应的股票代码,然后点击添加即可。2、自选股,顾名思义,是把自己看好的股票加入到自己选定的自选股股行中,用时可以看多个股票,比较...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。