`
jsntghf
  • 浏览: 2542735 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

使用定制的NSMutableDictionary方法对NSMutableArray排序

    博客分类:
  • iOS
阅读更多

首先,给NSMutableDictionary建一个分类,里面加上自定义的排序方法。

 

头文件:

 

#import <Foundation/Foundation.h>

@interface NSMutableDictionary(NSMutableDictionaryCompare)

- (NSComparisonResult)compareWithDictionary:(NSMutableDictionary *) dic;

@end

 

实现文件:

 

#import "CustomCompare.h"

@implementation NSMutableDictionary(NSMutableDictionaryCompare)

- (NSComparisonResult)compareWithDictionary:(NSMutableDictionary *) dic{
	NSMutableDictionary *dic1 = self;
	NSString *name1 = [dic1 objectForKey:@"Name"];
	NSString *name2 = [dic objectForKey:@"Name"];
	return [name2 compare:name1];
}

@end

 

示例:

 

NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Michael", @"Name", @"26", @"Age", nil];
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Eric", @"Name", @"24", @"Age", nil];
NSMutableDictionary *dic3 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Emilla", @"Name", @"25", @"Age", nil];
NSMutableDictionary *dic4 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Josh", @"Name", @"32", @"Age", nil];
NSMutableDictionary *dic5 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Echo", @"Name", @"22", @"Age", nil];
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:dic1, dic2, dic3, dic4, dic5, nil];
[dic1 release];
[dic2 release];
[dic3 release];
[dic4 release];
[dic5 release];
[array sortUsingSelector:@selector(compareWithDictionary:)];
NSLog(@"%@", array);
[array release];

 

示例输出:

 

{
    Age = 26;
    Name = Michael;
},
{
    Age = 32;
    Name = Josh;
},
{
    Age = 24;
    Name = Eric;
},
{
    Age = 25;
    Name = Emilla;
},
{
    Age = 22;
    Name = Echo;
}

 

分享到:
评论

相关推荐

    safely安全使用NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSMutableString。-Swift开发

    功能安全访问NSArray安全访问NSDictionary安全访问并对NSMutableArray进行更改安全访问并对NSMutableDictionary进行更改安全访问并对NSMutableString进行更改要求iOS 8.0+ / macOS 10.13.6+ Xcode 10.1(10B61)+...

    iOS中对字典进行排序

    在Objective-C中,我们可以使用`NSArray`的`sortedArrayUsingComparator:`方法,传入一个比较Block来实现字典的排序。以下是一个按照键排序的例子: ```objc NSDictionary *unsortedDict = @{@"C": @3, @"A": @1...

    顺序版NSMutableDictionary

    例如,可以创建一个名为`YHDic`的自定义字典类,它扩展了`NSMutableDictionary`的功能,并且包含一个`NSMutableArray`成员变量来跟踪键值对的插入顺序。当调用`addObject:forKey:`、`removeObjectForKey:`或`set...

    IOS根据汉字(或英文)按字母排序并按首字母分组

    在Objective-C中,我们可以使用`NSArray`类的`sortedArrayUsingComparator:`方法来对数组进行自定义排序。这个方法接受一个比较器 block,其中我们可以指定如何比较数组中的元素。对于字符串,我们可以基于Unicode值...

    NSDictionary_NSMutableDictionary

    1.字典使用Key-Value的形式储存数据,是关键字及其定义(描述)的集合 2.字典中的对象储存没有顺序,使用key来表示每个对象,key唯一,Value值可相同 3.字典里Value值在前,key在后 Cocoa中的实现字典的集合...

    iphone存储用法汇总

    `NSMutableArray`提供了可变的有序集合,可以在运行时添加、删除或重新排序元素。 - **创建和使用`NSMutableArray`**: - 初始化:`NSMutableArray *mutableArray = [[NSMutableArray alloc] init];` - 添加元素...

    Objective-c解析XML封装

    3 返回NSMutableDictionary或者NSMutableArray,键值封装。 示例见最后的注释。 XML封装类待续。。。 转载请注明来源,谢谢 ====== XmlResolve.h #import &lt;Foundation/Foundation.h&gt; @interface ...

    ios字典排序

    在Swift中,可以使用`[String: Any]`字典,并结合`sorted(by:)`方法来实现按特定规则排序的字典。不过,这并不会保持插入顺序,而是每次排序都会重新计算顺序。 了解这些知识点后,你可以根据需求灵活地处理iOS...

    ios 各种分类集合类库

    6. **排序与比较**:集合类库中的对象可以通过`compare:`方法进行比较,数组和集合可以使用`sortedArrayUsingComparator:`进行排序。 7. **性能优化**:在处理大量数据时,可以使用NSOrderedSet或NSCountedSet来...

    CDZDictionaryArray:dictionary array, dictionaryarray, A mutable array owning key, 一个带有键值的可变数组

    CDZDictionaryArraydictionary array, dictionaryarray, A mutable array owning key, 一个带有键值的可变数组to use like NSMutableDictionary or NSMutableArray用法和 NSMutableDictionary 和 NSMutableArray ...

    NSArray,NSSet,NSEnumerator,NSDictionary及对应Mutable介绍

    这些类包括NSArray、NSSet、NSEnumerator和NSDictionary,以及它们的可变版本NSMutableArray、NSMutableSet和NSMutableDictionary。这些类提供了各种操作来处理对象的集合,如添加、删除、查找等。以下是关于这些类...

    Objective-C笔试及答案

    - **背景介绍:** 在Objective-C中,我们可以自定义排序方法来对数组进行排序。 - **知识点解释:** 要实现学生对象数组按照学号升序排列的比较逻辑,可以声明一个实例方法`- (NSComparisonResult)...

    iOS面试题-总览

    代码中提供的`quickSortWithArray`方法实现了这一算法,它通过选取一个基准值,将数组分为两部分,使得一部分的所有元素都小于基准,另一部分的所有元素都大于基准,然后对这两部分递归地进行快速排序。 3. **`...

    Objective-C词典对象的使用总结

    Objective-C是苹果公司开发的一种面向对象的编程语言,...以上就是Objective-C中NSDictionary和NSMutableDictionary词典对象的主要使用方法,通过这些方法可以高效地处理键值对数据,实现复杂的数据管理与存储需求。

    object-c insert

    但可以使用NSMutableDictionary进行插入操作,方法是`setObject:forKey:`: ```objc NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Value1", @"Key1", @"Value2", @"Key2", ...

    object c中关于foundation类得ppt

    ##### (4) 集合类(NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSSet、NSMutableSet) - **NSArray 和 NSMutableArray** - **定义**: - NSArray:不可变数组,一旦创建后不能更改。 - ...

    Objective-C基础知识及简介.docx

    - **字典**:可以使用`NSMutableDictionary`和`NSDictionary`来存储键值对。 例如创建一个可变数组和一个可变字典: ```objective-c NSMutableArray *mutableArray = [[NSMutableArray alloc] init]; [mutableArray...

    Object-c字符串数组字典

    NSMutableDictionary提供了增加和修改键值对以及删除字典内容的方法。 ### 集合(NSSet & NSMutableSet) 集(Set)是一个无序的集合,在Objective-C中由NSSet类来表示。集中的每个元素都是唯一的,它类似于数学中...

    iphone 对象转字典 增强版

    例如,使用`NSMutableDictionary`和`NSMutableArray`的`addObject:`方法而不是`setObject:forKey:`,以避免创建新的集合实例。 6. **可扩展性**:设计灵活的接口,使得新加入的自定义对象或数据结构能轻松集成到...

Global site tag (gtag.js) - Google Analytics