KVC

本文将介绍如何利用Objective-C的KVC技术,结合AFNetworking库,在iOS应用中实现数据的高效绑定与网络请求操作。通过实例演示,展示如何在获取网络数据后,使用setValuesForKeysWithDictionary方法将JSON数据映射到模型对象中,同时处理特定关键字的赋值,确保数据的一致性和准确性。
1. 在model.h文件中声明属性(声明的属性与获取的字典中键(key)一致)
//属性名必须与字典里面的键(key)一样,KVC才会把值(value)传递进来
@property (nonatomic, copy) NSString *imageUrl;
@property (nonatomic, copy) NSString *contents;
@property (nonatomic, copy) NSString *date;
@property (nonatomic, assign) NSInteger contentID;
2.在网络获取时用setValuesForKeysWithDictionary:把key-value一一对应
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.
responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
    [manager
GET:@"http://www.tingwen.me/akcms_category.php?id=1&page=1" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
       
NSArray *dataArray = responseObject;
       
for (NSDictionary *dic in dataArray) {
           
//初始化model对象
           
NewsModel *newsModel = [[NewsModel alloc] init];
           
//从一个字典映射到一个对象里面,这是KVC里边的一个方法,不需要向以前一样把字典里边的键值取出来存在model属性里面
            [newsModel setValuesForKeysWithDictionary:dic];
            [self.datasource addObject:newsModel];
        }
       
//数据封装完成后,需要刷新tableView显示新的数据内容
        [
self.tableView reloadData];
    }
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//        NSLog(@"error:%@", error);
    }];
}
3.如果获取的文件中有关键字,用 setValue:(id)value forUndefinedKey:(NSString *)key把关键字key对应的value赋值给重新定义的属性:(用self.contentID代替系统关键字id
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
   
if ([key isEqualToString:@"id"]) {
       
self.contentID = (NSInteger)value;
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值