如何对 iOS 文档目录中的目录进行计数
Posted
技术标签:
【中文标题】如何对 iOS 文档目录中的目录进行计数【英文标题】:How to Count Directories in iOS Documents Directory 【发布时间】:2015-01-01 20:09:47 【问题描述】:我正在尝试使用以下 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' 每次都返回 nil。这是为什么呢?
【问题讨论】:
这很可能意味着array
已经是nil
。您应该使用contentsOfDirectoryAtPath()
的error
参数,检查返回值并打印错误。 – 您是否检查过path
是否包含您所期望的内容?
我以前从未使用过错误指针,但我试了一下,它给了我:“操作无法完成。没有这样的文件或目录”。这是否表明它找不到“文档”目录,或者它是空的?
【参考方案1】:
您查找 Documents 目录的方法有误,NSBundle.mainBundle().resourcePath
给出了应用程序包的路径。
为此目的有一个专用函数:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
然后你应该使用错误参数并检查返回值时 检索目录内容:
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)")
【讨论】:
【参考方案2】:感谢 Martin R. 的原始答案!这是一个 Swift 3 版本,以防万一有人需要它...
斯威夫特 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
//...
【讨论】:
以上是关于如何对 iOS 文档目录中的目录进行计数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Gallery App IOS 中显示文档目录中的图像?