KVC

来源:互联网 发布:买网络教育本科多少钱 编辑:程序博客网 时间:2024/05/29 08:52
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 = [AFHTTPRequestOperationManagermanager];
    manager.
responseSerializer.acceptableContentTypes= [NSSetsetWithObject:@"text/html"];
    [manager
GET:@"http://www.tingwen.me/akcms_category.php?id=1&page=1"parameters:nilsuccess:^(AFHTTPRequestOperation*operation, id responseObject) {
       
NSArray *dataArray = responseObject;
       
for (NSDictionary *dic in dataArray) {
           
//初始化model对象
           
NewsModel *newsModel = [[NewsModel alloc] init];
           
//从一个字典映射到一个对象里面,这是KVC里边的一个方法,不需要向以前一样把字典里边的键值取出来存在model属性里面
            [newsModel setValuesForKeysWithDictionary:dic];
            [self.datasourceaddObject:newsModel];
        }
       
//数据封装完成后,需要刷新tableView显示新的数据内容
        [
self.tableViewreloadData];
    }
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;
    }
}
0 0
原创粉丝点击