黑马程序员———OC语言 NSDictionary和 NSMutableDictionary的介绍
2015-11-02 16:36
316 查看
------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------
一 NSDictionary的介绍和代码创建
1.NSDictionary:通过一个key(键),就能找到对应的value(值)。 NSDictionary
是不可变的,一旦初始化完毕,里面的内容就无法更改。NSDictionary
以%@格式打印字典,控制台里面大括号{}里面就是字典内容,二数组则是小括号()里面的内容。
2.注意:创建多组字典里的value和 key都必须是对象,只能写成@"key1",不能写成整型1等。
3.代码实现
#import <Foundation/Foundation.h>
int main(int
argc, const
char * argv[]) {
@autoreleasepool {
//1 创建空字典
NSDictionary *arr=[NSDictionary
dictionary];
//2 创建只有一组键值对的字典
NSDictionary *arr2=[NSDictionary
dictionaryWithObject:@"zhangshan"
forKey:@"zs"];
NSLog(@"%@",arr2);
//3创建只有多组键值对的字典@"value"值在前,@"key"值在后。
NSDictionary *arr3=[NSDictionary
dictionaryWithObjectsAndKeys:@"value1",@"key1",
@"value2",@"key2",nil];
NSLog(@"%@",arr3);
//4
快速创建字典
格式:NSDictionary *arr4={key值:value值,key值:value值....};
//key值不能重复,如果重复了,虽然不会报错,但是最后重复的内容将不会被保存到字典中。
NSDictionary *arr4=@{@"zs":@"zhangshan",@"ls":@"lisi"};
NSLog(@"%@",arr4);
//5 获取字典的长度.count
NSLog(@"%ld",arr4.count);
//6 根据key值取出value值
NSString *str=[arr4
objectForKey:@"ls"];
NSLog(@"%@",str);
//7 字典的遍历(如果使用for循环只能默认的获取key值)
for (NSString *key
in arr4) {
NSLog(@"key--->%@,value--->%@",key,[arr4
objectForKey:key]);
}
[arr4 enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOL *stop) {
NSLog(@"%@=%@",key,obj);
}];
}
return
0;
}
二 NSDictionary的简写及写入文件
#import
<Foundation/Foundation.h>
void test(){
//1
用简写形式定义一个字典
NSDictionary *arr=@{@"zbz":@"zhangbozhi",@"cgx":@"chengguanxi"};
//2 用简写形式获取key对应的value的值
NSLog(@"%@",arr[@"zbz"]);
//3 把字典保存到.plist文件中去
BOOL isWrite = [arr
writeToFile:@"/Users/benqingsong/Desktop/arr.plist"
atomically:YES];
if (isWrite) {
NSLog(@"写入成功!");
}//打印出得结果的确是写入成功,说明已经写入.plist文件中
//4 从.plist文件中去读取字典
NSDictionary *readArr=[NSDictionary
dictionaryWithContentsOfFile:@"/Users/benqingsong/Desktop/arr.plist"];
NSLog(@"%@",readArr);
}
int main(int argc,
const char * argv[]) {
@autoreleasepool {
// // 省
市
// // 先定义一个市的数组
// NSArray *lnarr=[NSArray arrayWithObjects:@"shengyang",@"dalian", nil];
// NSArray *hbarr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang", nil];
//
// //再定义一个省对应市的字典
// NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:lnarr,@"ln",hbarr,@"hb", nil];
// NSLog(@"citys=%@",citys);
// //再把字典写入到文件中才是王道!!!
//
// BOOL iswrite=[citys writeToFile:@"/Users/benqingsong/Desktop/citys.plist" atomically:YES];
//
// if (iswrite) {
// NSLog(@"写入成功!");
// }
//读取citys.plist文件中的内容
NSDictionary *citysdict=[NSDictionary
dictionaryWithContentsOfFile:@"/Users/benqingsong/Desktop/citys.plist"];
[citysdict enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOL *stop) {
//NSLog(@"key-->%@,value-->%@",key,obj);
//如果要打印出所有的城市
for (NSString *str
in obj) {
NSLog(@"city=%@",str);
}
}];
// 获取每个数组
NSArray *arr= citysdict[@"ln"];
NSLog(@"%@",[arr
lastObject]);
}
return
0;
}
三 NSMutableDictionary代码的创建
NSMutableDictionary:是NSDictionary的子类。NSMutableDictionary
是可变的,随时可以往里面添加更改删除元素。
注意:NSArray是有序的,是通过下标访问的。
NSDictionary是无序的,通过key值访问元素。
#import <Foundation/Foundation.h>
int main(int
argc, const
char * argv[]) {
@autoreleasepool {
//1 创建一个可变的空字典
NSMutableDictionary *dict=[NSMutableDictionary
dictionary];
//2 给可变字典添加键对值
[dict setObject:@"liuneng"
forKey:@"ln"];
[dict setObject:@"zhaosi"
forKey:@"zs"];
NSLog(@"%@",dict);
//3 删除
// [dict removeObjectForKey:@"zs"];
// NSLog(@"%@",dict);
//
// // 全部删除
// [dict removeAllObjects];
// NSLog(@"%@",dict);
//
//4 修改
[dict setObject:@"wanglaowu"
forKey:@"zs"];
NSLog(@"%@",dict);
//简化修改
dict[@"ln"]=@"vvvvvv";
NSLog(@"%@",dict);
//5 查找 allKeys:获取所有key的值
NSArray *arr= [dict
allKeys];
if([arr
containsObject:@"zs"]){
NSLog(@"存在这个zs这个key");
}
}
return
0;
}
一 NSDictionary的介绍和代码创建
1.NSDictionary:通过一个key(键),就能找到对应的value(值)。 NSDictionary
是不可变的,一旦初始化完毕,里面的内容就无法更改。NSDictionary
以%@格式打印字典,控制台里面大括号{}里面就是字典内容,二数组则是小括号()里面的内容。
2.注意:创建多组字典里的value和 key都必须是对象,只能写成@"key1",不能写成整型1等。
3.代码实现
#import <Foundation/Foundation.h>
int main(int
argc, const
char * argv[]) {
@autoreleasepool {
//1 创建空字典
NSDictionary *arr=[NSDictionary
dictionary];
//2 创建只有一组键值对的字典
NSDictionary *arr2=[NSDictionary
dictionaryWithObject:@"zhangshan"
forKey:@"zs"];
NSLog(@"%@",arr2);
//3创建只有多组键值对的字典@"value"值在前,@"key"值在后。
NSDictionary *arr3=[NSDictionary
dictionaryWithObjectsAndKeys:@"value1",@"key1",
@"value2",@"key2",nil];
NSLog(@"%@",arr3);
//4
快速创建字典
格式:NSDictionary *arr4={key值:value值,key值:value值....};
//key值不能重复,如果重复了,虽然不会报错,但是最后重复的内容将不会被保存到字典中。
NSDictionary *arr4=@{@"zs":@"zhangshan",@"ls":@"lisi"};
NSLog(@"%@",arr4);
//5 获取字典的长度.count
NSLog(@"%ld",arr4.count);
//6 根据key值取出value值
NSString *str=[arr4
objectForKey:@"ls"];
NSLog(@"%@",str);
//7 字典的遍历(如果使用for循环只能默认的获取key值)
for (NSString *key
in arr4) {
NSLog(@"key--->%@,value--->%@",key,[arr4
objectForKey:key]);
}
[arr4 enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOL *stop) {
NSLog(@"%@=%@",key,obj);
}];
}
return
0;
}
二 NSDictionary的简写及写入文件
#import
<Foundation/Foundation.h>
void test(){
//1
用简写形式定义一个字典
NSDictionary *arr=@{@"zbz":@"zhangbozhi",@"cgx":@"chengguanxi"};
//2 用简写形式获取key对应的value的值
NSLog(@"%@",arr[@"zbz"]);
//3 把字典保存到.plist文件中去
BOOL isWrite = [arr
writeToFile:@"/Users/benqingsong/Desktop/arr.plist"
atomically:YES];
if (isWrite) {
NSLog(@"写入成功!");
}//打印出得结果的确是写入成功,说明已经写入.plist文件中
//4 从.plist文件中去读取字典
NSDictionary *readArr=[NSDictionary
dictionaryWithContentsOfFile:@"/Users/benqingsong/Desktop/arr.plist"];
NSLog(@"%@",readArr);
}
int main(int argc,
const char * argv[]) {
@autoreleasepool {
// // 省
市
// // 先定义一个市的数组
// NSArray *lnarr=[NSArray arrayWithObjects:@"shengyang",@"dalian", nil];
// NSArray *hbarr=[NSArray arrayWithObjects:@"baoding",@"shijiazhuang", nil];
//
// //再定义一个省对应市的字典
// NSDictionary *citys=[NSDictionary dictionaryWithObjectsAndKeys:lnarr,@"ln",hbarr,@"hb", nil];
// NSLog(@"citys=%@",citys);
// //再把字典写入到文件中才是王道!!!
//
// BOOL iswrite=[citys writeToFile:@"/Users/benqingsong/Desktop/citys.plist" atomically:YES];
//
// if (iswrite) {
// NSLog(@"写入成功!");
// }
//读取citys.plist文件中的内容
NSDictionary *citysdict=[NSDictionary
dictionaryWithContentsOfFile:@"/Users/benqingsong/Desktop/citys.plist"];
[citysdict enumerateKeysAndObjectsUsingBlock:^(id key,
id obj, BOOL *stop) {
//NSLog(@"key-->%@,value-->%@",key,obj);
//如果要打印出所有的城市
for (NSString *str
in obj) {
NSLog(@"city=%@",str);
}
}];
// 获取每个数组
NSArray *arr= citysdict[@"ln"];
NSLog(@"%@",[arr
lastObject]);
}
return
0;
}
三 NSMutableDictionary代码的创建
NSMutableDictionary:是NSDictionary的子类。NSMutableDictionary
是可变的,随时可以往里面添加更改删除元素。
注意:NSArray是有序的,是通过下标访问的。
NSDictionary是无序的,通过key值访问元素。
#import <Foundation/Foundation.h>
int main(int
argc, const
char * argv[]) {
@autoreleasepool {
//1 创建一个可变的空字典
NSMutableDictionary *dict=[NSMutableDictionary
dictionary];
//2 给可变字典添加键对值
[dict setObject:@"liuneng"
forKey:@"ln"];
[dict setObject:@"zhaosi"
forKey:@"zs"];
NSLog(@"%@",dict);
//3 删除
// [dict removeObjectForKey:@"zs"];
// NSLog(@"%@",dict);
//
// // 全部删除
// [dict removeAllObjects];
// NSLog(@"%@",dict);
//
//4 修改
[dict setObject:@"wanglaowu"
forKey:@"zs"];
NSLog(@"%@",dict);
//简化修改
dict[@"ln"]=@"vvvvvv";
NSLog(@"%@",dict);
//5 查找 allKeys:获取所有key的值
NSArray *arr= [dict
allKeys];
if([arr
containsObject:@"zs"]){
NSLog(@"存在这个zs这个key");
}
}
return
0;
}
相关文章推荐
- VC++ 6.0实用技巧汇总
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员———OC语言 类的声明和实现
- C语言8章函数
- 黑马程序员———C语言 结构体
- 浅谈C++类--隐式类类型转换
- 黑马程序员———C语言 一维数组
- C++基础——类模板
- Student Information System
- 495个C语言问题(摘录)
- 日志库EasyLogging++学习系列(9)—— 性能跟踪功能
- C++ STL中Map的按Key排序和按Value排序
- C++ delete指针的含义
- 第8周项目3 顺序串算法
- 黑马程序员———C语言 分支语句和循环语句
- (C++)字符串分割
- emacs中c++程序编译执行
- c语言预编译
- C语言6章循环结构
- 求最大子串和