按目标C中的子数组值排序数组

时间:2011-03-28 01:17:33

标签: iphone objective-c arrays sorting

我在Objective C中有一个多项目数组,其中每个项目都是一个包含4个项目的子数组。我需要根据子数组的一个值对主数组进行排序。

我怎样才能(快速)?

Array看起来像这样:

    (
    Marly,
    "Avenida Caracas - Calle 51",
    "4.637467,-74.066799",
    a,
    "10070.563466"
),
    (
    "Calle 76",
    "Avenida Caracas - Calle 76",
    "4.662918,-74.061198",
    a,
    "7250.832506"
),
    (
    Profamilia,
    "Avenida Caracas - Calle 34",
    "4.621341,-74.06976",
    a,
    "11853.104432"
),
    (
    "Avenida 39",
    "Avenida Caracas - Calle 39",
    "4.626816,-74.068687",
    a,
    "11243.556349"
)

2 个答案:

答案 0 :(得分:3)

您可以使用任意数量的NSArrayNSMutableArray排序方法。如果您使用的是iOS 4.0或更高版本,最简单的可能是“UsingComparator:”版本。这将是这样的:

[array sortUsingComparator:^NSComparisonResult(id a, id b) {
    NSString *name1 = [a objectAtIndex:0];
    NSString *name2 = [b objectAtIndex:0];
    return [name1 localizedCaseInsensitiveCompare:name2];
}]

答案 1 :(得分:0)

漂亮的代码Anomie!正是我在寻找的东西:)

但有两件事:

1 - 它是“sortedArrayUsingComparator”NSArray的函数而不是“sortUsingComparator”

2 - 你能解释一下代码:

^NSComparisonResult(id a, id b) {...}

喜欢:^有什么作用?从我从Apple Doc中读到的内容我假设你所做的是编写一个比较函数(花括号之间的代码),然后将它定义为NSComparisonResult。但是为什么假设/使用对象(id a,id b)?有没有一种常用的方法来为每种功能/数据类型执行此操作?