// // main.m // NSDictionary // // Created by rayln on 13-9-6. // Copyright (c) 2013年 rayln. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSDictionary *dic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil] forKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil]]; NSDictionary *dic2 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil] forKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil]]; //包含的元素个数 [dic count]; //返回4 //比较2个字典是否相等 [dic isEqualToDictionary:dic2]; //根据key取出value [dic objectForKey:@"k1"]; //输出a //字典写入文件中 [dic writeToFile:@"/Users/rayln/Desktop/text.txt" atomically:YES]; //从字典读取数据 [NSDictionary dictionaryWithContentsOfFile:@"/Users/rayln/Desktop/text.txt"]; //返回所有的key [dic allKeys]; //返回所有的value [dic allValues]; #pragma mark - 用法 //另一种声称dictionary方法 NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys: @"v6", @"k6", @"v1", @"k1", @"v1", @"k2", @"v1", @"k3", @"v4", @"k4", nil]; //返回包含value的所有key [dic3 allKeysForObject:@"v1"]; //输出[k1, k2, k3] //对应多个key找到多个value, notFoundMarker参数是表示如果找不到对应的key,则value值由notFoundMarker替代 [dic3 objectsForKeys:[NSArray arrayWithObjects:@"k1", @"k2", @"k5", nil] notFoundMarker:@"notfound"]; //输出[v1, v1, notfound] #pragma mark - 字典遍历 //遍历所有key for (id key in dic3) { NSLog(@"%@", key); } //key的迭代器 NSEnumerator *enumKey = [dic3 keyEnumerator]; id key = nil; while (key = [enumKey nextObject]) { NSLog(@"key=%@", key); } //对象迭代器 不演示了! [dic3 objectEnumerator]; //block遍历- stop表示是否停止循环 如果stop=YES, 则停止循环 [dic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { NSLog(@"block-%@=%@",key,obj); }]; #pragma mark - 字典排序 //根据value进行排序,返回排好序的key的Array NSArray *arr = [dic3 keysSortedByValueUsingSelector:@selector(compare:)]; //返回[k3, k2, k1, k4, k6] //block排序,也是根据value进行排序,返回排好序的key的Array arr = [dic3 keysSortedByValueUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) { NSComparisonResult *result = [obj1 compare:obj2]; return result; }];//返回[k3, k2, k1, k4, k6] NSLog(@"%@", arr); #pragma mark - 内存管理 //当字典有对象时,字典中每个对象都会做一次retain操作,当字典释放时就会做一次release操作 } return 0; }
NSDictionary
字典相当于Java中的Map, 有key和value
猜你喜欢
转载自rayln.iteye.com/blog/1938369
今日推荐
周排行