2015-12-21 35 views
1

我試圖獲取子目錄。這是我的數據結構。使用Swift獲取子目錄

根/

  • 一個/
    • 的1.txt
    • 2.txt
  • B/
    • 3.txt
    • 4.txt

我想在一個特定的文件夾(根)目錄。我在根文件路徑中使用枚舉器:

let enumerator = NSFileManager.defaultManager().enumeratorAtPath(filePath) 
for element in enumerator! { 
    print(element) 
} 

但是,它會迭代root中的每個文件。我怎樣才能得到子目錄(一個& b)?

+0

目前還不清楚你在問什麼。您是否只列出位於特定文件夾中的目錄? –

+0

是的。我試圖在特定文件夾中獲取目錄 – WeiJay

+0

無需使用深層枚舉器,只需獲取該目錄的內容並過濾返回的目錄即目錄 –

回答

8

沒有必要使用深度枚舉。只需獲取contentsOfDirectoryAtURL並過濾返回的目錄即urls。

的Xcode 8.2.1•斯威夫特3.0.2

extension URL { 
    var isDirectory: Bool { 
     return (try? resourceValues(forKeys: [.isDirectoryKey]))?.isDirectory == true 
    } 
    var subDirectories: [URL] { 
     guard isDirectory else { return [] } 
     return (try? FileManager.default.contentsOfDirectory(at: self, includingPropertiesForKeys: nil, options: [.skipsHiddenFiles]).filter{ $0.isDirectory }) ?? [] 
    } 
} 

用法:

let documentsDirectoryURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) 

let subDirs = documentsDirectoryURL.subDirectories