博客
关于我
Objective-C ---JSON 解析 和 KVC
阅读量:795 次
发布时间:2023-02-17

本文共 1656 字,大约阅读时间需要 5 分钟。

KVC - key value coding

1. 创建Model类

创建一个继承自NSObject的Model类

在Objective-C中,首先需要创建一个符合数据结构的Model类。我们假设需要处理的数据包括姓名、描述以及一组书籍。

在Model类中声明相应的属性:

@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *desc;
@property (nonatomic, strong) NSMutableArray *books;

2. 实现KVC方法

通过重写KVC方法来处理数据赋值和键值转换

当键为"desc"时:

if ([key isEqualToString:@"description"]) {            self.desc = value;        }

当键为"books"时:

if ([key isEqualToString:@"books"]) {            // 需要将数组转换为Model的实例            for (id obj in value) {                [_photoList addObject:[Photo instanceObj:obj]];            }        }
- (id)valueForUndefinedKey:(NSString *)key {            return nil;        }

3. 数据解析过程

在需要解析数据的控制器中调用以下方法

[model setValuesForKeysWithDictionary:dic];

解析示例

完整的解析过程示例代码如下:

NSDictionary *dic = @{        @"name": @"John Doe",        @"description": @"Hello World",        @"books": [{            @"title": @"The Great Gatsby",            @"author": @"F. Scott Fitzgerald"        }]    };    Model *model = [[Model alloc] init];    [model setValuesForKeysWithDictionary:dic];    

注意事项

1. 对于数组类型的键值,需要在Model中预先声明相应的属性

2. 在处理KVC时,需要注意键名与属性名的对应关系
3. 如果遇到特殊需求,可以自定义KVC行为

转载说明

原文地址: https://my.oschina.net/adso/blog/682174

你可能感兴趣的文章
OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
查看>>
OAuth2.0_授权服务配置_客户端详情配置_Spring Security OAuth2.0认证授权---springcloud工作笔记142
查看>>
OAuth2.0_授权服务配置_密码模式及其他模式_Spring Security OAuth2.0认证授权---springcloud工作笔记145
查看>>
OAuth2.0_授权服务配置_资源服务测试_Spring Security OAuth2.0认证授权---springcloud工作笔记146
查看>>
OAuth2.0_环境介绍_授权服务和资源服务_Spring Security OAuth2.0认证授权---springcloud工作笔记138
查看>>
OAuth2.0_环境搭建_Spring Security OAuth2.0认证授权---springcloud工作笔记139
查看>>
oauth2.0协议介绍,核心概念和角色,工作流程,概念和用途
查看>>
OAuth2授权码模式详细流程(一)——站在OAuth2设计者的角度来理解code
查看>>
oauth2登录认证之SpringSecurity源码分析
查看>>
OAuth2:项目演示-模拟微信授权登录京东
查看>>
OA系统多少钱?OA办公系统中的价格选型
查看>>
OA系统选型:选择好的工作流引擎
查看>>
OA让企业业务流程管理科学有“据”
查看>>
OA项目之会议通知(查询&是否参会&反馈详情)
查看>>
Vue.js 学习总结(13)—— Vue3 version 计数介绍
查看>>
OA项目之我的会议(会议排座&送审)
查看>>
OA项目之我的会议(查询)
查看>>
OA项目之我的审批(会议查询&会议签字)
查看>>
OA项目之项目简介&会议发布
查看>>
ObjC的复制操作
查看>>