** 背景:**
公司接口返回的數(shù)據(jù)有一個特點:如果某個字段沒有值孕暇,就不返回這個字段。這就造成在模型中賦值的時候只搁,有些屬性為nil音比。如果直接使用這個字段,碰到為nil就會有問題氢惋。
以前的解決方法有兩種:①在使用時對nil進行處理洞翩;②在給模型賦值時,手動一個個處理焰望。但無論哪一種菱农,都要手動去一個個寫太麻煩,今天查資料找到了下面的方法:
思路:用循環(huán)遍歷模型中的屬性柿估,拿到屬性名(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++) {//循環(huán)讀取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>