NSFileManager - Swift - 文件浏览器

4

我是ios开发的新手,正在尝试用Swift创建一个应用程序,以列出目录中的所有文件(所有文件都是PDF),并允许用户打开它们。

我已经通过谷歌搜索了过去两天,但我感到非常困惑。有人可以建议教程或步骤,以使此工作正常运行吗?

我已经在我的ViewController.swift文件中开始了以下内容:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    class func defaultManager()->NSFileManager{

    }

}

我不知道接下来该怎么办,感觉很沮丧。如果有任何帮助或建议,我将不胜感激。

谢谢, J

3个回答

5
let manager = NSFileManager.defaultManager()
var array = manager.contentsOfDirectoryAtPath(_ path: String,
                         error error: NSErrorPointer) -> [AnyObject]?

Swift 3.0 版本

let manager = FileManager.default
let installed_files = try manager.contentsOfDirectory(atPath: "/Applications/")

你需要传递存储文件的目录,可能是documentDirectory或它的子目录。我的代码只是一个提示,但会类似这样。 - Nicolas Manzini
我把这段代码放进我的class func defaultManager里面吗? - user3608800
你可以把这段代码放在任何地方。实际上,你的 defaultManager 函数是错误的,你不需要它。如果你正在测试,应该将其放在 viewdidLoad 中。当你的控制器出现在屏幕上时,它至少会被调用一次。 - Nicolas Manzini
在这行代码中:var array = manager.contentsOfDirectoryAtPath(_ path: String, error error: NSErrorPointer) -> [AnyObject]?; - user3608800
是的,你不能复制粘贴contentOfDirectory,它是fileManager的一个方法。你应该阅读有关nsfileManager的文档,以了解如何使用它。不,NSFileManager仅适用于内部磁盘。你需要NSURLSESSION来进行远程请求。 - Nicolas Manzini
显示剩余2条评论

2

这里是一个更新的Swift 2完整示例。

将文件添加到项目中的文件夹(而不是组),然后使用以下代码获取文件名列表。

private func getListOfFileNames() -> Array<String> {

    let docsPath = NSBundle.mainBundle().resourcePath! + "/DirectoryName"
    let fileManager = NSFileManager.defaultManager()
    let docsArray: Array<String>

    do {
        docsArray = try fileManager.contentsOfDirectoryAtPath(docsPath)
    } catch {
        print(error)
    }

    return docsArray
}

2
也许我回答你有点晚,但我的回答可能会帮助其他人。我在github上找到了一个库FileBrowser。这是一种非常容易浏览文件的方法。这里有一个示例:
let fileBrowser = FileBrowser()
present(fileBrowser, animated: true, completion: nil)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接