我遇到了一个问题,我需要从层次结构中删除阵列中的所有项目(如果文件夹下有任何文件夹)。
一个例子将有助于理解它。
以下是数组:
/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
这可能是最好的方法吗?或者我需要循环并进行一些字符串比较并从数组中删除项目?
非常需要您的帮助。
答案 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];
}
}