iOS中对字典进行排序
来源:互联网 发布:mmd怎么载人动作数据 编辑:程序博客网 时间:2024/05/10 03:55
iOS中字典实际上是无序的,那么如果我们要对字典进行排序要怎么做呢?
代码如下:
@interface OrderedDictionary : NSMutableDictionary{NSMutableDictionary *dictionary;NSMutableArray *array;}//插入一个位置- (void)insertObject:(id)anObject forKey:(id)aKey atIndex:(NSUInteger)anIndex;//取得某个位置的obj- (id)keyAtIndex:(NSUInteger)anIndex;//逆序- (NSEnumerator *)reverseKeyEnumerator;//顺序- (NSEnumerator *)keyEnumerator;@end
#import "OrderedDictionary.h"NSString *DescriptionForObject(NSObject *object, id locale, NSUInteger indent){NSString *objectString;if ([object isKindOfClass:[NSString class]]){objectString = (NSString *)[[object retain] autorelease];}else if ([object respondsToSelector:@selector(descriptionWithLocale:indent:)]){objectString = [(NSDictionary *)object descriptionWithLocale:locale indent:indent];}else if ([object respondsToSelector:@selector(descriptionWithLocale:)]){objectString = [(NSSet *)object descriptionWithLocale:locale];}else{objectString = [object description];}return objectString;}@implementation OrderedDictionary//初始化方法- (id)init{return [self initWithCapacity:0];}//初始化方法- (id)initWithCapacity:(NSUInteger)capacity{self = [super init];if (self != nil){dictionary = [[NSMutableDictionary alloc] initWithCapacity:capacity];array = [[NSMutableArray alloc] initWithCapacity:capacity];}return self;}//析构方法- (void)dealloc{[dictionary release];[array release];[super dealloc];}//copy方法- (id)copy{return [self mutableCopy];}//复写方法- (void)setObject:(id)anObject forKey:(id)aKey{if (![dictionary objectForKey:aKey]){[array addObject:aKey];}[dictionary setObject:anObject forKey:aKey];}- (void)removeObjectForKey:(id)aKey{[dictionary removeObjectForKey:aKey];[array removeObject:aKey];}- (NSUInteger)count{return [dictionary count];}- (id)objectForKey:(id)aKey{return [dictionary objectForKey:aKey];}- (NSEnumerator *)keyEnumerator{return [array objectEnumerator];}- (NSEnumerator *)reverseKeyEnumerator{return [array reverseObjectEnumerator];}- (void)insertObject:(id)anObject forKey:(id)aKey atIndex:(NSUInteger)anIndex{if ([dictionary objectForKey:aKey]){[self removeObjectForKey:aKey];}[array insertObject:aKey atIndex:anIndex];[dictionary setObject:anObject forKey:aKey];}- (id)keyAtIndex:(NSUInteger)anIndex{return [array objectAtIndex:anIndex];}//返回一个字符串对象,该对象代表了字典的内容,格式的属性列表。- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level{NSMutableString *indentString = [NSMutableString string];NSUInteger i, count = level;for (i = 0; i < count; i++){[indentString appendFormat:@" "];}NSMutableString *description = [NSMutableString string];[description appendFormat:@"%@{\n", indentString];for (NSObject *key in self){[description appendFormat:@"%@ %@ = %@;\n",indentString,DescriptionForObject(key, locale, level),DescriptionForObject([self objectForKey:key], locale, level)];}[description appendFormat:@"%@}\n", indentString];return description;}@end
先看一段代码
NSMutableDictionary *dict2 = [[NSMutableDictionary alloc]initWithCapacity:0]; [dict2 setObject:@"one" forKey:@"1"]; [dict2 setObject:@"two" forKey:@"2"]; [dict2 setObject:@"four" forKey:@"4"]; [dict2 setObject:@"three" forKey:@"3"]; for (NSString *str in [dict2 allKeys]) { NSLog(@"key == %@",str); }
这个结果可以看到和我们实际存入字典的顺序是不一样的
OrderedDictionary *dict = [[OrderedDictionary alloc]initWithCapacity:0]; [dict setObject:@"two" forKey:@"2"]; [dict setObject:@"four" forKey:@"4"]; [dict setObject:@"three" forKey:@"3"]; [dict setObject:@"one" forKey:@"1"]; [dict insertObject:@"five" forKey:@"5" atIndex:0]; NSEnumerator *enumerator2 = [dict keyEnumerator]; id obj; while(obj = [enumerator2 nextObject]) { NSLog(@"%@",obj); }
结果一目了然啦,大家快去使用吧~ 哈哈
源码:字典排序 参考文章:http://www.cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html
1 0
- iOS中对字典进行排序
- iOS中对字典进行排序
- iOS中对字典进行排序 ios开发教程
- iOS中对字典的key进行排序
- 对字典进行排序
- iOS 对字典的key,value进行排序
- python_对字典进行排序
- [python]对字典进行排序
- python 对字典进行排序
- 对字典values进行排序
- Python中对字典按其键值进行排序
- iOS 字典中遍历出的key 如何进行排序
- Python中对字典排序
- 对python中的字典进行排序
- 如何对Map进行字典排序Java
- 根据字典的值大小对字典进行排序
- IOS中 NSDictionary(字典)排序
- ios 对时间进行排序
- 当我们放弃时,我们想些什么
- linux常用c函数接口处理篇
- 【转】Android EditText截获与监听输入事件
- 对accept函数第二个参数的理解
- java排序--平衡二叉树
- iOS中对字典进行排序
- 最详细SQL注入教程
- windows下安装setuptool
- 芯片植入技术飞速发展 人类未来或变身
- 2013JAVA软件工程师人才需求分析
- hdu 1394 Minimum Inversion Number
- linux last 命令介绍
- 百度2014校园招聘笔试题 ——深度学习算法研发工程师.
- RemoteDesktop_SuppressWhenMinimized