[英]can't create PDFDocument(url: url) with local url in SwiftUI
我使用 .fileImporter 从本地设备将 pdf url 导入到我的 swiftui 应用程序中。 现在我想转换成数据并保存。
.fileImporter(isPresented: $isPresented, allowedContentTypes: [.pdf]) { result in
switch result {
case .success(let url):
if let pDFDocument = PDFDocument(url: url) {
// this is nil
if let data = pDFDocument.dataRepresentation() {
// save data
}
}
case .failure(let error):
print(error)
}
}
然而,这是行不通的。 PDFDocument(url: url) 为 nil,尽管文件刚刚从 .fileImporter 中选取。 url 遵循以下模式:
file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Documents/etc...
我猜是 private 阻止了访问? 如果是这样,我怎样才能将 pdf 文件放入我的应用程序并使用它?
我想知道如何让它工作
使用 startAccessingSecurityScopedResource() 为我解决了这个问题:
.fileImporter(isPresented: $isPresented, allowedContentTypes: [.pdf]) { result in
switch result {
case .success(let url):
url.startAccessingSecurityScopedResource()
if let pDFDocument = PDFDocument(url: url) {
// this is nil
if let data = pDFDocument.dataRepresentation() {
// save data
}
}
case .failure(let error):
print(error)
}
}
https://developer.apple.com/documentation/foundation/nsurl/1417051-startaccessingsecurityscopedreso
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.