Objective c 删除阵列中的父路径

Objective c 删除阵列中的父路径,objective-c,nsstring,nsarray,nsurl,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/BB012345678

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

举个例子有助于理解它

以下是阵列:

/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
从这里,我需要删除所有留下这两个项目的项目,因为其他项目是或的父路径

/用户/ANOPVAIDYA/Doc/HierarchyDefect/A 2/B/BB01234567890123 和 /用户/anopvaidya/Doc/HierarchyDefect/A/B/BB012345678901234

最好的方法是什么?或者我需要循环并进行一些字符串比较,然后从数组中删除这些项


非常需要并感谢您的帮助。

我使用以下方法解决了此问题:

//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];
    }

}

你必须循环。可可溶液也会循环。也许
-hasPrefix:
NSString
)有帮助。@AminNegm-Awad:在上述情况下,所有项目的结果都是肯定的。所以当你检查第一个和最后一个或者第五个和第四个的时候,你会给我不正确的结果。但是我假设在这个数组中可以有完全不同的条目。e/Users/aminnegm/…。当然,你必须通过平等性测试来消除误报。(我写了可能有用但不完整的解决方案)这可以通过使用stringByDeletingLastPathComponent大大简化