删除数组中的父路径

时间:2015-03-13 12:36:20

标签: objective-c nsstring nsarray nsurl

我遇到了一个问题,我需要从层次结构中删除阵列中的所有项目(如果文件夹下有任何文件夹)。

一个例子将有助于理解它。

以下是数组:

/Users/anoopvaidya/Doc/HierarchyDefect/A,
/Users/anoopvaidya/Doc/HierarchyDefect/A 2,
/Users/anoopvaidya/Doc/HierarchyDefect/A 2/B,
/Users/anoopvaidya/Doc/HierarchyDefect/A 2/B/BB01234567890123,
/Users/anoopvaidya/Doc/HierarchyDefect/A/B,
/Users/anoopvaidya/Doc/HierarchyDefect/A/B/BB012345678901234

从这里我需要删除所有留下这两个项目的项目,因为其他项目是其中一个或这个的父路径。

/ Users / anoopvaidya / Doc / HierarchyDefect / A 2 / B / BB01234567890123 和     /用户/ anoopvaidya /文件/ HierarchyDefect / A / B / BB012345678901234

这可能是最好的方法吗?或者我需要循环并进行一些字符串比较并从数组中删除项目?

非常需要您的帮助。

1 个答案:

答案 0 :(得分:0)

我用这个解决了它:

//sort the files
NSArray *sortedFiles = [pathArray sortedArrayUsingSelector:@selector(compare:)];
//then look if parent is there, if yes remove the parent
NSMutableArray *mArray = [NSMutableArray arrayWithArray:sortedFiles];
for (NSString *str in sortedFiles) {
    NSMutableArray *broken = [[str componentsSeparatedByString:@"/"] mutableCopy];
    [broken removeLastObject];
    NSString *parent = [broken componentsJoinedByString:@"/"];
    if ([mArray containsObject:parent]) {
        [mArray removeObject:parent];
    }

}