如何计算iOS文档目录中的目录

时间:2015-01-01 20:09:48

标签: swift nsfilemanager

我正在尝试使用以下快速代码计算我的应用的iOS文档目录中的目录数量:

    let manager = NSFileManager.defaultManager()
    let path: NSString = NSBundle.mainBundle().resourcePath!.stringByAppendingPathComponent("Documents")
    var array = manager.contentsOfDirectoryAtPath(path, error: nil)
    let count = array?.count

我的文档目录目前包含一个目录但是当我运行此代码时,'count'每次都返回nil。这是为什么?

2 个答案:

答案 0 :(得分:4)

找到Documents目录的方法有误,NSBundle.mainBundle().resourcePath给出了应用程序包的路径。

为此目的有一个专用功能:

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

然后你应该使用error参数并检查返回值 检索目录内容:

let fileManager = NSFileManager.defaultManager()
var error : NSError?
if let files = fileManager.contentsOfDirectoryAtPath(documentsPath, error: &error) {
    let count = files.count
    // ...
} else {
    println("Could not get contents of directory: \(error?.localizedDescription)")
}

答案 1 :(得分:1)

感谢Martin R.的原始答案!这是一个Swift 3版本,任何人都需要它......

Swift 3

    func countFilesInDocumentsDirectory() {

        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) [0] as String

        do {
            let files = try FileManager.default.contentsOfDirectory(atPath: documentsPath)
            print("File count = \(files.count)")
            for i in 0...files.count-1 {
                print("FILE: \n\(files[i])")
            }
        } catch {
            //...
        }
    }