KVC的简单用法
来源:互联网 发布:淘宝卖的好的飞机杯 编辑:程序博客网 时间:2024/04/30 09:59
//// KVCDemo.h// OC基础学习//// Created by 麦子 on 15/6/2.// Copyright (c) 2015年 麦子. All rights reserved.//#import <Foundation/Foundation.h>@class Book;@interface KVCDemo : NSObject{ @private NSString *name; @public NSString *address; @private Book *book;}+(void) setData;+(void) getData;+(void) getResultData;@end
//// KVCDemo.m// OC基础学习//// Created by 麦子 on 15/6/2.// Copyright (c) 2015年 麦子. All rights reserved.//#import "KVCDemo.h"#import "Book.h"/** KVC 可以访问对象的属性, 不是通过get和Set的方法访问,同时,对于Private的属性,同样可以直接访问, KVC设置和访问的形式,都是以key,val的形式来处理。 感觉IOS的数据存储都是这样的形式。 **/static KVCDemo *kvcDemo = nil;@implementation KVCDemo+(void) setData{ kvcDemo = [[KVCDemo alloc] init]; [kvcDemo setValue:@"kvc学习" forKey:@"name"]; // 后面的参数,就是这个对象的属性名称。setValue这个参数是一个对象,如果是基础类型需要转换。 Book *bookEntity = [[Book alloc] init]; [bookEntity setValue:@"OC基础学习" forKey:@"bookName"]; [bookEntity setValue:[NSNumber numberWithFloat:99.2] forKey:@"price"]; NSMutableArray *array = [[NSMutableArray alloc] init]; for (int i = 0; i<5; i++) { Book *book = [[Book alloc]init]; NSString *str = [NSString stringWithFormat:@"OC--%d", i]; [book setValue:str forKey:@"bookName"]; [book setValue:[NSNumber numberWithFloat:40+i] forKey:@"price"]; [array addObject:book]; [book release]; } [bookEntity setValue:array forKey:@"array"]; [kvcDemo setValue:bookEntity forKey:@"book"]; // 层级设置属性 }+(void) getData{ if (kvcDemo != nil) { NSString *str = [kvcDemo valueForKey:@"name"]; NSLog(@"kvc---%@",str); Book *book = [kvcDemo valueForKey:@"book"]; NSString *bookName = [book valueForKey:@"bookName"]; NSNumber *price = [book valueForKey:@"price"]; NSLog(@"book----%@------%@",bookName,price); // 层级获取数据 NSString *bookNameByPath = [kvcDemo valueForKeyPath:@"book.bookName"]; // 路径直接获取数据。 NSLog(@"bookName--%@",bookNameByPath); NSArray *nameArray = [kvcDemo valueForKeyPath:@"book.array.bookName"]; // 这种语法支持这种形式处理。 NSLog(@"%@",nameArray); } }+(void)getResultData{ // KVC 的简单运算 if (kvcDemo != nil) { NSString *sum = [kvcDemo valueForKeyPath:@"book.array.@sum.price"]; // 这种运算的目标对应的是一个集合。 NSString *avg = [kvcDemo valueForKeyPath:@"book.array.@avg.price"]; // 这种运算的目标对应的是一个集合。 NSString *max = [kvcDemo valueForKeyPath:@"book.array.@max.price"]; // 这种运算的目标对应的是一个集合。 NSString *min = [kvcDemo valueForKeyPath:@"book.array.@min.price"]; // 这种运算的目标对应的是一个集合。 NSLog(@"sum:%@--avg:%@--max:%@--min:%@",sum,avg,max,min); }}@end
//// Book.h// OC基础学习//// Created by 麦子 on 15/6/2.// Copyright (c) 2015年 麦子. All rights reserved.//#import <Foundation/Foundation.h>@interface Book : NSObject{ @private NSString *bookName; @private float price; @private NSArray *array;}@end
//// Book.m// OC基础学习//// Created by 麦子 on 15/6/2.// Copyright (c) 2015年 麦子. All rights reserved.//#import "Book.h"@implementation Book @end
/**KVC 学习**/ KVCDemo *kvc = [[KVCDemo alloc] init]; kvc->address = @"深圳"; NSLog(@"kvc.address--%@",kvc->address); // public的可以直接访问,不用通过get,或者set的方法的形式处理。 // KVC 处理形式。 [KVCDemo setData]; [KVCDemo getData]; [KVCDemo getResultData];
KVC用途,当我们在知道了一个有规律的key值的时候, 需要把这一系列的值放入到一个对象中,如:解析xml中,key和实体对象的属性对应的时候,那么解析的时候,就只要这一句KVC的代码, 方便,省代码。
打印结果如下:
2015-06-02 12:33:07.157 OC基础学习[1627:83040] kvc.address--深圳
2015-06-02 12:33:07.158 OC基础学习[1627:83040] kvc---kvc学习
2015-06-02 12:33:07.159 OC基础学习[1627:83040] book----OC基础学习------99.2
2015-06-02 12:33:07.159 OC基础学习[1627:83040] bookName--OC基础学习
2015-06-02 12:33:07.159 OC基础学习[1627:83040] (
"OC--0",
"OC--1",
"OC--2",
"OC--3",
"OC--4"
)
2015-06-02 12:33:07.159 OC基础学习[1627:83040] sum:210--avg:42--max:44--min:40
Program ended with exit code: 0
0 0
- KVC的简单用法
- kvc简单的用法
- KVC简单用法
- KVC/KVO简单用法
- KVC的用法
- KVC的用法
- KVC的用法
- KVC、KVO的用法
- KVC的一些用法
- KVC的用法
- 键值编码(KVC)-简单的KVC
- iOS中KVC的用法
- KVC的原理和用法
- KVO/KVC简单的介绍
- KVC的一些基础知识和用法
- KVO/KVC做了简单的介绍
- iOS KVC与KVO的简单使用
- OC-简单介绍KVC和简单的使用!
- XMPP之tigase源码部署
- 第13周项目3-立体类族共有的抽象类
- C#中ref和out的区别浅析
- hdu 阿牛的EOF牛肉串 (java)
- [SPFA+路径输出] ZOJ3088 Easter Holidays
- KVC的简单用法
- jedis连接池
- hdu 神、上帝以及老天爷 java
- SQL Server 2005分页存储过程
- 百度李彦宏:互联网的未来发展有两种结局
- hdu 折线分割平面 (java)
- thread, looper, handler vs ScheduledExecutorService
- Codeforces Round #240 (Div. 1)---B.Mashmokh and ACM(dp)
- 字符编码