您的位置:首页 > 其它

OC-字典常用操作(NSDictionary、NSMutableDictionary)

2014-08-08 11:58 555 查看

字典是关键字及其定义的集合

NSDictionary能在给定得关键字key(通常是一个NSString字符串)下存储一个数值value(可以是任意类型的Objective-C对象),然后你就可以用这个关键字来查找相应的数据

字典(也被称为散列表或关键数组)使用的是键查询的优化方式,可以立即查找出查询的数据,而不需要遍历

NSString *f1 = @"one";
NSString *f2 = @"two";
NSString *f3 = @"three";
NSArray *key = @{@"1", @"2", @"3"};
NSString *value = @{@"one", @"two", @"three"};
//字典初始化的方法,一个key只有一个value,一个value可以有很多的key
NSDictionary *f_nsd1 = [NSDictionary dictionaryWithObjectsAndKeys:f1, @"1", f2, @"2", f3, @"3" ,nil];
NSDictionary *f_nsd2 = @{@"11" : f1, @"22" : f2, @"33" : f3};
NSDictionary *f_nsdarr = [NSDictionary dictionaryWithObjects:value forKeys:key];

//获取字典数量
NSInteger count = [f_nsd1 count];

//取值,如果字典没有所查找数据返回nil值
NSString *f_key1 = [f_nsd1 objectForKey:@"1"];
NSString *f_key2 = f_nsd2[@"11"];
//排序

NSArray *arrs=[f_nsd1 keysSortedByValueUsingSelector:@selector(compare:)];

//获取所有key
NSArray *keys = [f_nsd1 allKeys];
//获取所有Value
NSArray *values = [f_nsd1 allValues];
[f_nsd1 = setValue:@"hello" forKey:@"attribute"];//添加键值对
<span style="font-family: Arial, Helvetica, sans-serif;">    [f_nsd1 = setValue:@"hell" forKey:@"attribute"];//更改键值对</span>
//保存对象到内容文件
NSString *path=@"/Users/apple/Desktop/test.plist";
[f_nsd1 writeToFile:path atomically:YES];
//从以前保存的文件读取到字典对象
NSDictionary *data=[NSDictionary dictionaryWithContentsOfFile:path];

//可变字典
//向NSMutableDictionary 类发送dictionary消息,可以创建新的NSMutableDictionary对象
//也可以使用dictionaryWithCapacity:创建限制大小的可变数组
NSMutableDictionary *f_nsm = [NSMutableDictionary dictionary];
[f_nsm setObject:f1 forKey:@"111"];
[f_nsm setObject:f2 forKey:@"222"];
[f_nsm setObject:f3 forKey:@"333"];

//向字典里添加字典
NSDictionary *f_nsd3 = [NSDictionary dictionaryWithObjects:@"four" forKeys:@"444"];
[f_nsm addEntriesFromDictionary:f_nsd3];

[f_nsm removeObjectForKey:@"333"]; //从字典里删除单个key的value

//删除一组key的value
NSArray *arrkeys = [NSArray arrayWithObjects:@"222", @"333", nil];
[f_nsm removeObjectsForKeys:arrkeys];

//删除所有value
[f_nsm removeAllObjects];

//快速枚举
for (id key in f_nsm) {
NSString *object = [f_nsm objectForKey:key];
}

//迭代枚举器
NSEnumerator *enumerator = [f_nsm keyEnumerator];
id key = [enumerator nextObject];
while (key) {
id objects = [f_nsm objectForKey:key];
key = [enumerator nextObject];
}

//与NSArray一样,没有适合NSMutableDictionary的字面量初始化语法

最后提醒各位一点,切记不要尝试创建NSString、NSArray、NSDictionary的子类

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐