我的iOS应用程序中有一个包含4个子文件夹的文件夹,每个文件夹包含大约20个文件。我希望能够遍历每个文件夹并打印出文件名。我不知道该怎么做。
以下是我的尝试:
let docsPath = NSBundle.mainBundle().resourcePath! + "/Samples";
let fileManager = NSFileManager.defaultManager()
var error: NSError?
let docsArray = fileManager.contentsOfDirectoryAtPath(docsPath, error:&error)
println(docsArray)
这打印出零。我希望它打印出每个文件名。我该如何实现这一目标?
答案 0 :(得分:0)
这里有两个问题:
1)
检查您构建的应用程序,看看“Samples”是否真的在构建的二进制文件中结束。从“操作无法完成”的错误中,我认为您不是将“Samples”复制到已编译的应用程序包中,或者至少复制到您期望的位置。
2)
您正在进行的通话将为您提供该文件夹的内容,但 不 子文件夹的内容,这是您真正想要列出的内容。
使用NSDirectoryEnumerator
代替获取该文件夹和子文件夹的内容。 Here is a related question可能会给你一个方向。
答案 1 :(得分:0)
如果要获取包含子目录内的所有文件,可以使用NSFileManager的枚举器。
简单示例:
if let enumerator = fileManager.enumeratorAtURL(docsPath, includingPropertiesForKeys: nil, options: nil, errorHandler: nil) {
while let url = enumerator.nextObject() as? NSURL {
println(url)
}
}
答案 2 :(得分:0)
没关系,我明白了:
var docsPath = NSBundle.mainBundle().resourcePath! + "/Snare";
let fileManager = NSFileManager.defaultManager()
var error: NSError?
let docsArray = fileManager.contentsOfDirectoryAtPath(docsPath, error:&error)
//println(error!.localizedDescription)
println(docsArray)
for filename in docsArray!
{
let subfolderPath = docsPath + "/"+(filename as! String)
println(docsPath)
let subarray = fileManager.contentsOfDirectoryAtPath(subfolderPath, error: &error)
println(subarray)
}