SandboxのDocumentディレクトリにフォルダを作成して、そのフォルダへPDFファイルを保存、取得、削除する
GitHub
ソースコード
PDFファイルを保存
func saveToDocumentDirectory(data: NSData) -> URL? {
guard let documentDirectory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) else { return nil }
let pDFsDirectory = documentDirectory.appendingPathComponent("PDFs", isDirectory: true)
do {
try FileManager.default.createDirectory(at: pDFsDirectory, withIntermediateDirectories: true, attributes: nil)
}
catch {
print("失敗した")
}
// PDFファイルを保存
let filePath = pDFsDirectory.appendingPathComponent("receipt-" + UUID().uuidString + ".pdf")
do {
try data.write(to: filePath)
print(filePath)
return filePath
} catch {
print(error.localizedDescription)
return nil
}
}
PDFファイルを取得と削除
var PDFpath: [URL]?
func initialize() {
// 初期化
PDFpath = []
guard let documentDirectory = try? FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) else { return }
// PDFsというフォルダを作成
let pDFsDirectory = documentDirectory.appendingPathComponent("PDFs", isDirectory: true)
do {
try FileManager.default.createDirectory(at: pDFsDirectory, withIntermediateDirectories: true, attributes: nil)
}
catch {
print("失敗した")
}
do {
// ファイル一覧を取得
let directoryContents = try FileManager.default.contentsOfDirectory(at: pDFsDirectory, includingPropertiesForKeys: nil)
// if you want to filter the directory contents you can do like this:
let pdfFiles = directoryContents.filter{ $0.pathExtension == "pdf" }
let pdfFileNames = pdfFiles.map{ $0.deletingPathExtension().lastPathComponent }
// PDFファイルを取得
for fileName in pdfFileNames {
let content = pDFsDirectory.appendingPathComponent(fileName + ".pdf")
do {
// PDFファイルを削除
try FileManager.default.removeItem(at: content)
}
catch let error {
print(error)
}
}
}
catch {
print(error)
}
}