使用包含Numbers作为String的NSDictionaries对NSMutableArray进行排序?

时间:2014-03-22 11:44:59

标签: arrays xcode sorting

有一点问题但找不到可行的解决方案:(

我有一个像NSMutableArray:

{
    Entfernung = 129521;
    "Event_DATE" = "2014-03-23";
    "Event_ID" = 1;
    "Event_KAT" = 1;
    "Event_NAME" = achtzehn;
},
{
    Entfernung = 112143;
    "Event_DATE" = "2014-03-24";
    "Event_ID" = 2;
    "Event_KAT" = 2;
    "Event_NAME" = neunzehn;
}

如何使用“Entfernung”对象对此数组进行排序?

Thx 4帮助! 格哈德

3 个答案:

答案 0 :(得分:1)

尝试这样的事情;

NSArray *stuff = .... //your array here;

NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:@"Entfernung" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {

    //depending on the number stored in the string, you might need the floatValue or doubleValue instead
    NSNumber *num1 = @([(NSString*)obj1 integerValue]);
    NSNumber *num2 = @([(NSString*)obj2 integerValue]);

    return [num1 compare:num2];
}];

NSArray *sortedStuff = [[stuff sortedArrayUsingDescriptors:@[sorter]];

答案 1 :(得分:0)

我最简单的说法就是在Entfernung类上定义一个比较方法,然后使用- (void)sortUsingSelector:(SEL)comparator如果你已经有一个接受两个对象的函数(比如你的NSDictionary }对象)然后我按照这个- (void)sortUsingFunction:(NSInteger (*)(id, id, void *))compare context:(void *)context

进行排序

答案 2 :(得分:0)

给一个人一条鱼,他今天可以吃。告诉他如何捕鱼,他必须在余生中自己完成这项工作......

在Xcode中,查看帮助菜单。在帮助菜单中,您可以找到项目"文档和API参考"。在那里键入" NSMutableArray",然后搜索" sort"。这给你五种方法:

– sortUsingDescriptors:
– sortUsingComparator:
– sortWithOptions:usingComparator:
– sortUsingFunction:context:
– sortUsingSelector:

您可以单击每个并阅读说明。最直接使用的是sortUsingComparator:它附带了一些适合您的目的的示例代码。