从文档目录swift

时间:2015-09-20 12:16:18

标签: ios swift

我正在尝试获取一个[String],其中包含我在文档目录中创建的文件夹中所有文件夹的名称。我目前有一些工作,但它也迭代这些目录中的所有内容,并给我文件的名称。

目前我有这个:

let file_manager = NSFileManager.defaultManager()
let enumerator:NSDirectoryEnumerator? = file_manager.enumeratorAtPath(getDocumentsFilePath("Test"))
while let element = enumerator?.nextObject() as? String
{
      // Add folder names to the return value
      return_value.insert(element, atIndex: return_value.count)
}

但正如我所说,这也是给我目录中文件的名称。

我发现这个代码似乎是我正在寻找的,但它似乎可以解决NSParentSearchPathDirectory,但这似乎会给我文件目录中的所有目录名称。想知道这是否是我正在寻找的,但如果是这样,我怎样才能将我的字符串(我想要目录名的文件夹的路径)转换为NSParentSearchPathDirectory。或者,如果我的第一个例子是正确的,我将如何只返回目录而不是文件名。

NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory NSSearchPathDomainMask.AllDomainsMask, true) as? [String]

2 个答案:

答案 0 :(得分:4)

这是一个简单的函数,可用于获取特定目录中所有内容的路径。

func contentsOfDirectoryAtPath(path: String) -> [String]? {
    guard let paths = try? NSFileManager.defaultManager().contentsOfDirectoryAtPath(path) else { return nil}
   return paths.map { aContent in (path as NSString).stringByAppendingPathComponent(aContent)}
}

let searchPath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last!

let allContents = contentsOfDirectoryAtPath(searchPath)

答案 1 :(得分:0)

在Swift 4.0中

func contentsOfDirectoryAtPath(path: String) -> [String]? {
        guard let paths = try? FileManager.default.contentsOfDirectory(atPath: path) else { return nil}
        return paths.map { aContent in (path as NSString).appendingPathComponent(aContent)}
    }
    func getListOfDirectories()->[String]?{

        let searchPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last!
        let allContents = contentsOfDirectoryAtPath(path: searchPath)
        return allContents
    }