Swift xcode macos PDFDocument(url:URL)不创建文档

时间:2018-03-14 21:09:49

标签: swift xcode macos pdf

我正在尝试学习如何在xcode项目中在Swift中显示.pdf文件。如果目标文件位于项目的捆绑包中,我的代码可以正常工作,但是我无法显示我用户空间中其他地方的.pdf。在下面的代码中(下半部分)," pdfURL2"打印出来并且是正确的URL。代码打印出" File Exists",所以我知道目标文件是可访问的。这是一个有效的.pdf文件,我可以打开预览。使用xcode调试器," test"是" nil"。在此之后," pdfView.document = test"打开一个视图,但它当然是空的。如果我包围" test = PDFDocument(url:pdfURL2)"与警卫宣言"声明,线程崩溃。因此,我把它留了出来。

如何显示xcode"项目包中未明确显示的.pdf文件?

CODE FOLLOWS:

import Cocoa
import Quartz

class PDFViewController: NSViewController {

    @IBOutlet weak var pdfView: PDFView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let fm = FileManager.default


// THIS Code does WORK (for test.pdf in bundle)
        guard let pdfURL = Bundle.main.url(forResource: "test", withExtension: "pdf")
            else { fatalError("PDF not found") }

        guard let pdfDocument = PDFDocument(url: pdfURL)
            else { fatalError("PDF document not created") }
        pdfView.document = pdfDocument
// END of code that does WORK (for test.pdf in bundle)


// THis Code does NOT WORK for buildFile.pdf NOT in bundle

        let pdfPath2 = "/Users/myaccount/Desktop/Problematic/buildFile.pdf"
        let pdfURL2 = URL(fileURLWithPath: pdfPath2)
        print("pdfURL2 = \(pdfURL2)")

        if fm.fileExists(atPath: pdfPath2){
            print("File Exists")
            var test = PDFDocument(url: pdfURL2)
            pdfView.document = test
        }

        // Do any additional setup after loading the view.
    }  // End ViewDidLoad
} // End PDFViewController

1 个答案:

答案 0 :(得分:0)

可能是您已打开沙箱。如果启用了沙箱,则应用程序可以从“用户选择的文件”或“下载”,“图片”,“音乐”,“电影”文件夹中访问文件,但无法从提供的硬编码路径访问文件。

将其关闭将解决此问题。您可以在“功能”标签中找到沙盒