美文网首页
解决接口返回数据,某些字段为nil的问题

解决接口返回数据,某些字段为nil的问题

作者: zanyzephyr | 来源:发表于2016-07-27 17:31 被阅读42次

    ** 背景:**

    公司接口返回的数据有一个特点:如果某个字段没有值,就不返回这个字段。这就造成在模型中赋值的时候,有些属性为nil。如果直接使用这个字段,碰到为nil就会有问题。
    以前的解决方法有两种:①在使用时对nil进行处理;②在给模型赋值时,手动一个个处理。但无论哪一种,都要手动去一个个写太麻烦,今天查资料找到了下面的方法:

    思路:用循环遍历模型中的属性,拿到属性名(propertyname)后,再用kvc取出属性值(propertyValue)进行判断,如果属性值为空,则把它赋值为空字符串“”,然后把属性值赋给属性。

    关键部分代码:需要#import <Objc/runtime.h>
    <code>

    id matchBeanClass = objc_getClass("Foo");
    unsigned int outCount, i;
    objc_property_t *properties = class_copyPropertyList(matchBeanClass, &outCount);
    for (i = 0; i < outCount; i++) {//循环读取self的属性列表
        objc_property_t property = properties[i];
        fprintf(stdout, "%s %s\n", property_getName(property), property_getAttributes(property));
        
        NSString *propertyName = [NSString stringWithUTF8String:property_getName(property)];
        NSString *propertyValue = [self valueForKey:propertyName];
        if (!propertyValue) {//如果值不存在,则赋值为“”
            propertyValue = @"";
        }else{
            propertyValue = [NSString stringWithFormat:@"%@", propertyValue];
        }
        
        [self setValue:propertyValue forKey:propertyName];
    }
    

    <code>

    参考:http://blog.csdn.net/cubesky/article/details/38753885

    相关文章

      网友评论

          本文标题:解决接口返回数据,某些字段为nil的问题

          本文链接:https://www.haomeiwen.com/subject/axwojttx.html