1
我有一個NSArray
NSURL
s代表一組特殊的父目錄。我得到另一個NSArray
NSURL
s代表散落在系統周圍的文件。我想知道這些文件是否在我的任何特殊目錄或其任何子目錄中。 有沒有一個簡單的/預期的方式來做到這一點,而無需手動解析/遍歷絕對URL的路徑?如何使用NSURL查看某個文件夾是否是另一個文件夾的子項?
我有一個NSArray
NSURL
s代表一組特殊的父目錄。我得到另一個NSArray
NSURL
s代表散落在系統周圍的文件。我想知道這些文件是否在我的任何特殊目錄或其任何子目錄中。 有沒有一個簡單的/預期的方式來做到這一點,而無需手動解析/遍歷絕對URL的路徑?如何使用NSURL查看某個文件夾是否是另一個文件夾的子項?
NSURL
沒有辦法讓你看看另一個NSURL
是否代表另一個的根路徑。
一個可能的解決方案是使用path
屬性將這兩個URL轉換爲路徑字符串。然後看看一個字符串是否是另一個的前綴。但在獲取URL的路徑之前,請同時使用URLByStandardizingPath
和URLByResolvingSymlinksInPath
以確保一致的結果。
例子:
NSURL *specialURL = ... // a URL for one of the special parent directories
NSURL *fileURL = ... // a URL for one of the files to check
NSString *specialPath = [specialURL.URLByStandardizingPath.URLByResolvingSymlinksInPath.path stringByAppendingString:@"/"];
NSString *filePath = fileURL.URLByStandardizingPath.URLByResolvingSymlinksInPath.path
if ([filePath hasPrefix:specialPath]) {
// This file is in this special directory
}
您需要的前綴測試或其他類似'/ super'將被視作'/超市/ qfc'的父東西前一個加上尾部斜槓'specialPath'。 ('NSURL'''''''''''''' – CRD
@CRD好點,謝謝。更新。奇怪的是,當您打印代表文件夾的文件路徑的「NSURL」時,會顯示尾部斜線。但'path'的結果不包含斜線。 – rmaddy
謝謝!這似乎工作得很好:) –