如何计算 iOS 文档目录中的目录
How to Count Directories in iOS Documents Directory
我正在尝试使用以下 swift 代码计算我应用的 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' returns nil。这是为什么?
您查找 Documents 目录的方法有误,NSBundle.mainBundle().resourcePath
给出了应用程序包的路径。
有一个专门用于此目的的函数:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
然后你应该使用错误参数并检查 return 值
检索目录内容:
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)")
}
原始答案归功于 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 {
//...
}
}
我正在尝试使用以下 swift 代码计算我应用的 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' returns nil。这是为什么?
您查找 Documents 目录的方法有误,NSBundle.mainBundle().resourcePath
给出了应用程序包的路径。
有一个专门用于此目的的函数:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
然后你应该使用错误参数并检查 return 值 检索目录内容:
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)")
}
原始答案归功于 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 {
//...
}
}