【问题标题】:Sort array by number of path components in value objective-c [closed]按值objective-c中的路径组件数对数组进行排序[关闭]
【发布时间】:2013-12-10 17:56:01
【问题描述】:

我有一个nsarray,其中包含文件路径,我想使用顶部路径组件最多的值对其进行排序(索引为 0)

这是我在排序之前的数组:

Array (
    "/FIRST/SECOND/THIRD",
    "/FIRST/SECOND/MYFOLDER",
    "/FIRST/SECOND",
    "/FIRST/SECOND/MYFOLDER/PHOTOS"
)

这是我希望我的数组在之后的样子:

Array (
    "/FIRST/SECOND/MYFOLDER/PHOTOS",
    "/FIRST/SECOND/AWESOME",
    "/FIRST/SECOND/MYFOLDER",
    "/FIRST/SECOND"

)

【问题讨论】:

  • 到目前为止你尝试过什么?您是否查看过 NSArray 的文档并尝试过许多排序方法中的任何一种?

标签: objective-c arrays file sorting nsarray


【解决方案1】:

您可以将 NSString 方法 -pathComponents 与自定义排序块和 NSArray 的 -sortedArrayUsingComparator: 结合使用,以根据每个字符串中路径组件的数量获取数组的排序副本:

NSArray *sorted = [arrayBeforeSorting sortedArrayUsingComparator:^(id obj1, id obj2) {
                        NSUInteger count1 = [[obj1 pathComponents] count];
                        NSUInteger count2 = [[obj2 pathComponents] count];
                        if (count1 > count2) {
                            return NSOrderedAscending;
                        } else if (count1 < count2) {
                            return NSOrderedDescending;
                        } else {
                            return NSOrderedSame;
                        }
                    }];

【讨论】:

  • 感谢您的回答!如何同时按字母顺序排序?
  • @baileyseymour ... 将NSOrderedSame 替换为[obj1 compare:obj2]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多