NSDictionary 字典 & KVC 的使用
来源:互联网 发布:桥畔译谈CIP数据 编辑:程序博客网 时间:2024/05/18 12:43
字典分为不可变字典(NSDictionary)和可变字典(NSMutableDictionary)
/* 不可变字典 */
1.创建字典
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys: @"male",@"sex", @"20", @"age", @"Tom", @"name", @"run", @"hobby", nil];
2.获取所有的key值和value值
[dic allKeys]; [dic allValues];
3.根据key值来获取value值
[dic valueForKey:@"name"];
[dic objectForKey:@"name"];// 写法2 不可以写 nil, 写法1可以
4.遍历字典
NSArray *arr = [dic allKeys]; for (int i = 0; i < [arr count]; i++) { NSString *key = [arr objectAtIndex:i]; [dic objectForKey:key]; }
for (NSString *key in dic) { NSString *value = [dic objectForKey:key]; }
//写法2虽然写的是遍历字典,实际上还是遍历数组[dic allKeys];
/* 可变字典 */
NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"male",@"sex", @"20", @"age",nil];
2.增加键值对
[mDic setValue:@"Tom" forKey:@"name"]; [mDic setObject:@"Running" forKey:@"hobby"];
3.修改键值对
[mDic setValue:@"18" forKey:@"age"];
//跟2.增加键值对方法是一样的, 这个key值要是有就覆盖掉原来的value, 如果没有这个key值就相当于新添加一对键值对
4.删除键值对
[mDic removeObjectForKey:@"age"]; [mDic setValue:nil forKey:@"age"];
OC中 继承于 NSObject 的这些类统称 model 类 (用于存取字符串)
model类更像可变字典
例题1 把下列格式的输出用字典-数组嵌套的形式写出, 并转成model类的形式
(
{
body = {
"message" ="错误信息";
"errorcode" ="1";
};
header = (
{
"page" =@"10";
"title" =@"婚纱";
"content" =@"fwefasd";
"image" = (
@"http://www.hunliji.com1",
@"http://www.hunliji.com2",
@"http://www.hunliji.com3"
);
}
);
}
)
[1]字典-数组嵌套
NSMutableArray *bigArray = [NSMutableArray array]; NSMutableDictionary *bigDic = [NSMutableDictionary dictionary]; [bigArray addObject:bigDic]; NSMutableDictionary *bodyDic = [NSMutableDictionary dictionary]; [bodyDic setObject:@"错误信息" forKey:@"message"]; [bodyDic setObject:@"1" forKey:@"errorcode"]; [bigDic setObject:bodyDic forKey:@"body"]; NSMutableArray *headerArray = [NSMutableArray array]; [bigDic setObject:headerArray forKey:@"header"]; NSMutableDictionary *little = [NSMutableDictionary dictionary]; [headerArray addObject:little]; [little setObject:@"10" forKey:@"page"]; [little setObject:@"婚纱" forKey:@"title"]; [little setObject:@"fwefasd" forKey:@"content"]; NSMutableArray *images = [NSMutableArray array]; [images addObject:@"http://www.hunliji.com1"]; [images addObject:@"http://www.hunliji.com2"]; [images addObject:@"http://www.hunliji.com3"]; [little setObject:images forKey:@"image"];
[2] model类的形式
//建立model类要从结构里往外建立
1.建立HeaderModel
@interface HeaderModel : NSObject{ @public NSString *_page; NSString *_title; NSString *_content; NSMutableArray *_imageArray;}2.建立BodyModel
@interface BodyModel : NSObject{ @public NSString *_message; NSString *_errorcode;}
3.建立BigModel
@class BodyModel;@interface BigModel : NSObject{ @public BodyModel *_body; NSMutableArray *_headerArray; // 数组中存headermodel对象}</span>4.建立了一个工具类Tools将功能进行封装
.h
<span style="font-size:18px;">@class BigModel;@interface Tools : NSObject+ (BigModel *)getBigModel;.m
#import "Tools.h"#import "BigModel.h"#import "BodyModel.h"#import "HeaderModel.h"@implementation Tools+ (BigModel *)getBigModel{ BigModel *big = [[BigModel alloc] init]; big->_body = [[BodyModel alloc] init]; big->_body->_message = @"错误信息"; big->_body->_errorcode = @"10"; big->_headerArray = [NSMutableArray array]; HeaderModel *header = [[HeaderModel alloc] init]; [big->_headerArray addObject:header]; header->_content = @"fjaowief"; header->_imageArray = [NSMutableArray array]; [header->_imageArray addObject:@"http://www.hunliji.com1"]; [header->_imageArray addObject:@"http://www.hunliji.com1"]; [header->_imageArray addObject:@"http://www.hunliji.com1"]; header->_page = @"10"; header->_title = @"婚纱"; return big;}+ (NSString *)getValueFrom:(NSMutableArray *)array key:(NSString *)content{ BigModel *b = [array firstObject]; HeaderModel *header = [b->_headerArray firstObject]; NSString *my = header->_content; return my;}
main.m
NSMutableArray *bigArray = [NSMutableArray array]; BigModel *b1 = [Tools getBigModel]; [bigArray addObject:b1]; BigModel *b2 = [Tools getBigModel]; [bigArray addObject:b2];
/*KVC */
key - value - coding
1. 给属性赋值:
[dic setValue:<#(id)#> forKey:<#(NSString *)#>];
2. 最大的用处: 字典和model 的转换
3.通过字典给model 赋值:
<span style="font-size:14px;"> [model setValuesForKeysWithDictionary:<#(NSDictionary *)#>];</span>
必须在model类里重写:
<span style="font-size:14px;">-(void)setValue:(id)value forKey:(NSString *)key</span>
空着就可以, 如果没有定义这个属性, 就什么都不用写
- NSDictionary 字典 & KVC 的使用
- NSDictionary字典的使用
- Cocoa Foundation 框架:NSDictionary字典的使用
- NSDictionary(字典)类使用
- 字典NSDictionary 使用注意
- 4.4 iOS开发视频教程—NSDictionary字典的使用
- iOS/Objective-C字典对象NSDictionary的使用20130608更新
- Ojbect-C2 4、NSDictionary和NSMutableDictionary字典的使用
- IOS 中数组、集合、字典的使用(NSArray, NSSet, NSDictionary)
- NSDictionary字典的常用方法
- NSDictionary------字典
- 字典:NSDictionary
- 字典NSDictionary
- 字典NSDictionary
- NSDictionary 字典
- NSDictionary--字典
- 字典NSDictionary
- 字典NSDictionary
- DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5
- (3.1.7)Hibernate
- 东莞无人工厂变成现实,中国无人工厂将很快普及,保住世界工厂地位
- TJU-3847 SanXII(图论)
- Dev日常学习记录
- NSDictionary 字典 & KVC 的使用
- [LeetCode][Java] Pow(x, n)
- android shape的使用
- 返回一个数组中所有元素被第一个元素除的结果
- Oracle Temp 表空间切换
- (3.1.7.1)史上最简单的Hibernate入门简介
- linux驱动之spi学习小结
- 设置tomcat内存
- Mac下安装使用phpMyAdmin. Set up phpMyAdmin on MacOSX