我正在尝试学习如何在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
答案 0 :(得分:0)
可能是您已打开沙箱。如果启用了沙箱,则应用程序可以从“用户选择的文件”或“下载”,“图片”,“音乐”,“电影”文件夹中访问文件,但无法从提供的硬编码路径访问文件。
将其关闭将解决此问题。您可以在“功能”标签中找到沙盒