yymodel 某个属性当iOS以int接受 而接口返回null,json解析会崩溃不

news/2025/11/25 15:22:32/文章来源:https://www.cnblogs.com/huangzs/p/19268630
使用 YYModel 时,如果接口返回 null而 iOS 端用 int类型接收,​​不会崩溃,但会有默认值​​。

YYModel 的处理机制

1. 基本数据类型(int/NSInteger等)

@interface User : NSObject
@property (nonatomic, assign) int userId;
@property (nonatomic, assign) NSInteger age;
@end// JSON: {"userId": null, "age": null}
User *user = [User yy_modelWithJSON:json];
NSLog(@"%d", user.userId); // 输出: 0
NSLog(@"%ld", user.age);   // 输出: 0
​结果​​:不会崩溃,int类型会默认设置为 0

2. 对象类型(NSNumber *)

@interface User : NSObject
@property (nonatomic, strong) NSNumber *userId;
@property (nonatomic, strong) NSNumber *age;
@end// JSON: {"userId": null, "age": 25}
User *user = [User yy_modelWithJSON:json];
NSLog(@"%@", user.userId); // 输出: (null)
NSLog(@"%@", user.age);    // 输出: 25
​结果​​:不会崩溃,对象类型会设置为 nil

安全的使用方式

方式一:使用 NSNumber(推荐)

@interface User : NSObject
@property (nonatomic, strong) NSNumber *userId;
@property (nonatomic, strong) NSNumber *age;// 提供便捷访问方法
- (int)userIdIntValue;
- (int)ageIntValue;
@end@implementation User
- (int)userIdIntValue {return [self.userId intValue]; // 如果为nil返回0
}- (int)ageIntValue {return [self.age intValue]; // 如果为nil返回0
}
@end

方式二:自定义转换方法

@interface User : NSObject
@property (nonatomic, assign) int userId;
@property (nonatomic, assign) int age;// 自定义YYModel转换
+ (NSDictionary *)modelCustomPropertyMapper {return @{@"userId": @"id",@"age": @"age"};
}// 处理null值
- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic {// 手动处理可能的null值if (dic[@"id"] == [NSNull null]) {_userId = -1; // 设置特殊默认值}if (dic[@"age"] == [NSNull null]) {_age = -1; // 设置特殊默认值}return YES;
}
@end

方式三:使用类别安全解析

@interface NSDictionary (SafeYYModel)
- (id)safeObjectForKey:(id)key;
@end@implementation NSDictionary (SafeYYModel)
- (id)safeObjectForKey:(id)key {id obj = [self objectForKey:key];if (obj == [NSNull null]) {return nil;}return obj;
}
@end// 在model中自定义转换
- (BOOL)modelCustomTransformFromDictionary:(NSDictionary *)dic {NSNumber *userId = [dic safeObjectForKey:@"id"];_userId = userId ? [userId intValue] : 0;return YES;
}

实际使用建议

推荐方案:使用 NSNumber + 便捷方法

@interface User : NSObject
@property (nonatomic, strong) NSNumber *userId;
@property (nonatomic, strong) NSNumber *age;
@property (nonatomic, strong) NSNumber *height;// 便捷访问方法
- (int32_t)userIdValue;
- (int32_t)ageValue;
- (float)heightValue;// 安全访问方法(带默认值)
- (int32_t)userIdValueWithDefault:(int32_t)defaultValue;
@end@implementation User
- (int32_t)userIdValue {return [self.userId intValue];
}- (int32_t)ageValue {return [self.age intValue];
}- (float)heightValue {return [self.height floatValue];
}- (int32_t)userIdValueWithDefault:(int32_t)defaultValue {return self.userId ? [self.userId intValue] : defaultValue;
}
@end

验证测试

// 测试数据
NSDictionary *json1 = @{@"id": @123, @"age": @25};        // 正常数据
NSDictionary *json2 = @{@"id": [NSNull null], @"age": @25}; // 部分null
NSDictionary *json3 = @{@"id": [NSNull null], @"age": [NSNull null]}; // 全部nullUser *user1 = [User yy_modelWithJSON:json1];
User *user2 = [User yy_modelWithJSON:json2]; 
User *user3 = [User yy_modelWithJSON:json3];// 都不会崩溃
NSLog(@"User1: %d", user1.userId); // 123
NSLog(@"User2: %d", user2.userId); // 0  
NSLog(@"User3: %d", user3.userId); // 0

总结

  • ​不会崩溃​​:YYModel 对 null值有安全处理
  • ​基本类型​​:null会被转换为 0
  • ​对象类型​​:null会被转换为 nil
  • ​推荐使用 NSNumber​​:更安全,能区分"无值"和"0值"
  • ​YYModel 在这方面比某些其他JSON库更安全​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年穿线磁珠编带磁环制造企业权威推荐榜单:铁氧体磁环/非晶纳米晶磁环/磁环源头厂家精选

穿线磁珠与磁环作为电路电磁兼容性(EMC)保护的核心元件,其性能直接关系到电子设备的稳定性和可靠性。在电子元器件领域,编带包装是实现自动化生产的关键环节。以下将基于技术实力、产品特性及市场应用等客观维度,…

2025年下半年新疆学历提升、成人学历、专升本、自考本科、高起专机构全面评测与选择指南

摘要 2025年学历提升行业迎来新一轮发展机遇,随着职业教育政策的持续利好,市场需求呈现多元化、个性化趋势。本文基于市场调研和用户反馈,整理出五家值得关注的学历提升服务机构,排名不分先后,仅作参考选择。文末…

2025年11月中国电线电缆厂家推荐榜单:权威评测与综合排名分析

作为电线电缆行业的潜在用户,您可能正在为建筑工程项目、工业设备配套或家庭装修选购线缆产品。无论是追求成本控制的中小型承包商,还是注重长期安全性的终端用户,选择可靠的厂家始终是保障电力传输稳定性和施工质量…

AI搜索营销新蓝海:五家领先GEO服务商全景透视与战略布局指南

生成式AI搜索正以颠覆性态势重塑数字营销格局,传统搜索引擎优化策略在AI生成答案的新场景下亟待升级。GEO(生成式引擎优化)作为新一代营销技术,已成为企业在AI搜索流量红利中抢占先机的核心利器。面对DeepSeek、通…

2025年AI搜索时代五大GEO优化服务商全景解析:核心优势与行业适配指南

在人工智能浪潮席卷全球的今天,AI搜索正以惊人的速度重塑着信息获取与分发的格局。从DeepSeek到豆包,从文心一言到通义千问,多元化的AI搜索入口不仅改变了用户的搜索习惯,更在重构整个数字营销的生态体系。在这个充…

2025年实验室通风橱柜厂家权威推荐榜单:无管道净气型通风柜/二级生物安全柜/化学通风橱厂源头厂家精选

实验室安全无小事,通风橱柜作为守护科研人员健康的第一道防线,其性能直接关系到实验室的安全等级与运营效率。 据行业数据显示,2025年中国实验室通风设备市场规模预计将达到86亿元,年复合增长率稳定在12% 左右。在…

NOIP 模拟赛 9 比赛总结

分数:\(100 + 50 + 0 + 0 = 150\)神秘计数赛,使我的 rating \(+8\)。 T1 这道题很糖,但架不住我更糖。 如果暴力枚举所有子矩形,时间复杂度是 \(O(n^4)\) 的,肯定会 T 飞。 首先,与其直接计算有多少个五彩斑斓的…

2025 最新信息平台推荐!工程项目、招投标、招采、政府采购信息查询平台口碑榜,覆盖拟在建项目精准对接服务

在工程行业数字化转型加速的背景下,信息获取的效率与质量直接决定企业市场竞争力,但信息失真、更新滞后、功能适配不足等问题仍持续困扰行业。本次榜单依托国际工程信息服务协会(IEISA)2024 年度权威测评体系生成,…

2025年无纸化会议软件批发厂家权威推荐榜单:无纸化会议室/平板无纸化会议系统/无纸化升降器源头厂家精选

据《中国办公数字化发展报告》统计,2025年我国无纸化会议市场规模预计达到286亿元,较2020年增长320%。在数字化转型浪潮推动下,无纸化会议系统已成为政府机关、企事业单位提升会议效率的首选方案。 本文将基于研发实…

构建文明的算法:价值原语化、三值纠缠与五维追问——一种AI元人文的实践框架

构建文明的算法:价值原语化、三值纠缠与五维追问——一种AI元人文的实践框架 序言:终结“空想”的时代 在人文与人工智能的交叉地带,一种普遍的质疑始终萦绕不绝:所谓“AI元人文”,是否只是一种将人类深邃的精神世…

规范驱动开发:AWS Kiro如何重塑AI编程新范式

AWS副总裁Deepak Singh分享Kiro AI IDE如何通过规范驱动开发改变编程方式,从自动补全到智能代理编写代码,探讨AI工具演进及系统思维在软件开发中的重要性。规范驱动开发:在氛围编码世界中构建可靠软件 AI编程工具的…

2025 最新兽药厂家权威推荐榜:技术专利 + 服务能力双维度测评,优质企业全解析

引言 兽药行业作为养殖业健康发展的核心支撑,其产品质量与技术水平直接影响产业可持续性。据国际动物保健品协会(IFAH)最新测评数据显示,全球合规兽药产品市场渗透率仅 68%,仍有 32% 的产品存在有效成分不达标、生…

2025 最新活性炭源头厂家推荐榜:覆盖全品类高端产品,聚焦 85%+ 吸附率与权威测评优选煤质/军工/电极/食品级/医用级活性炭/超级电容炭公司推荐

引言 随着全球环保治理标准持续升级,VOCs 有机废气治理、水质净化、食品加工、医药提纯等领域对活性炭的性能要求愈发严苛,高吸附率、高稳定性、多场景适配的优质产品成为市场核心刚需。当前行业存在产品质量良莠不齐…

备份mysql数据库

备份mysql数据库mysqldump -u root -p honggong > /home/jzrobot/桌面/honggong.sql 备份mysql数据库并压缩mysqldump -u root -p honggong | gzip > /home/jzrobot/桌面/honggong.sql.gz 备份所有数据库mysqldu…

kafka的ISR机制

ISR 的工作机制 ISR 机制的全称是: In-Sync Replicas(同步副本集/同步副本机制) 1. 进入 ISR 当一个追随者副本启动时,它会开始从领导者副本拉取消息。如果它能够持续地、及时地追上领导者的最新数据(即 LEO - Lo…

2025年11月成都律师事务所推荐榜单:主流机构列表与专业服务解析

随着成都经济社会快速发展,企业和个人对法律服务的需求日益多元化。无论是初创企业需要合规指导,还是个人面临民事纠纷,选择一家专业可靠的律师事务所成为保障合法权益的关键。当前成都法律服务市场呈现规模化、专业…

2025 最新外包公司平台口碑最新推荐榜:权威测评认证的优质服务商,助力企业高效解决用工难题杭州/金华/衢州/温州/台州/绍兴/湖州外包公司推荐

引言 在全球经济一体化与数字化转型深度融合的当下,企业人力管理面临的合规复杂性、人才匹配精准度、成本控制精细化等挑战愈发突出。为筛选出真正具备核心服务能力的优质外包平台,本次榜单依托国际人力资源服务协会…

【隐语Secretflow】轻量级隐私计算任务编排框架Kuscia架构解析

打开链接点亮社区Star,照亮技术的前进之路。每一个点赞,都是社区技术大佬前进的动力Github 地址: *https://github.com/orgs/secretflow/kuscia 架构 Kuscia(Kubernetes-based Secure Collaborative InfrA)是一款…

快速了解Linux中的lsmod命令

1、概述 在Linux世界中,内核模块就像是系统的“即插即用”组件,它们允许内核在运行时动态扩展功能,而无需重新启动计算机。无论是硬盘驱动、网络协议还是显卡驱动,都常常以模块形式存在。那么,如何查看当前有哪些…

2025年专业的GEO优化实力厂家找哪家,GEO优化杭州服务商推荐TOP5,覆盖多行业需求

行业背景分析 随着人工智能技术的快速发展,GEO优化服务已成为企业数字营销布局的重要环节。在浙江地区,众多广告公司纷纷布局GEO优化领域,但各家实力参差不齐。本文基于公开数据和市场表现,对浙江地区五家专业从事…