所以这可能是一个微不足道的问题,但我无法让它发挥作用。
我将pdf file
保存到CoreData后将其保存到视图中(使用IOS'Drag&Drop
功能)
func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {
session.loadObjects(ofClass: ComicBookPDFDocument.self) { (pdfItems) in
let items = pdfItems as! [ComicBookPDFDocument]
// "Cannot assign value of type 'ComicBookPDFDocument' to type 'NSData?'"
self.file.data = items[0]
}
}
ComicBookPDFDocument
只是子类PDFDocument
,使其符合NSItemProviderReading
:
final class ComicBookPDFDocument: PDFDocument, NSItemProviderReading {
public static var readableTypeIdentifiersForItemProvider: [String] {
return [kUTTypePDF as String]
}
public static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> ComicBookPDFDocument {
return ComicBookPDFDocument(data: data)!
}
}
但是,我从XCode得到了这个编译错误:
无法指定'ComicBookPDFDocument'类型的值来输入'NSData?'
如何保存PDFDocument
的pdf数据?我在互联网或文档上找不到任何东西。
感谢您的帮助
答案 0 :(得分:0)
好的,我不知道我是怎么错过的,但现在是:
items[0].dataRepresentation()
答案 1 :(得分:0)
你做了一件事,
尝试将PDF保存到文档目录中,并将其路径保存在Core-Data中。
以下是保存到Document目录并从文档目录中获取的代码
class PDCache: NSObject {
static let sharedInstance = PDCache()
func saveData(obj: Data, fileName: String){
let filename = getDocumentsDirectory().appendingPathComponent("\(fileName).pdf")
do{
try obj.write(to: filename, options: .atomic)
} catch{
print(error.localizedDescription)
}
}
func getData(fileName: String) -> URL?{
let fileManager = FileManager.default
let filename = getDocumentsDirectory().appendingPathComponent("\(fileName).pdf")
if fileManager.fileExists(atPath: filename.path){
return URL(fileURLWithPath: filename.path)
}
return nil
}
private func getDocumentsDirectory() -> URL {
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
return paths[0]
}
}
要保存数据,请使用此
let data = Data()
self.saveData(obj: data, fileName: "myPdfFile")
并获取文件网址
let pdfUrl = self.getData(fileName: "myPdfFile")
试试这个,让我知道它是否适合你。