SwiftUI UIDocumentPickerViewControllerで選択したファイルがアプリ内フォルダにあるのか確認
SwiftUIでUIDocumentPickerViewControllerで選択したファイルがアプリ内フォルダにあるのか確認
外部フォルダであれば内部にコピーして使うことを考えていた。
アプリ内部フォルダであればコピーは不要。
選択したファイルがアプリ内フォルダにあるのか確認
アプリフォルダを取得、選択したファイルURLに含まれるか確認する。
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! if urls[0].absoluteString.contains(documentsPath) == true { print("My App Folder") }
Example documentPicker(_:didPickDocumentsAt:)
extension UIDocumentPickerViewControllerView: UIDocumentPickerDelegate { func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard urls.count != 0 else { return } print(#function) print(urls.debugDescription) print(urls[0].lastPathComponent) let fileManager = FileManager.default let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! print(documentsPath) let filePath = documentsPath + "/" + urls[0].lastPathComponent if urls[0].absoluteString.contains(documentsPath) == true { print("My App Folder") let _ = urls[0].startAccessingSecurityScopedResource() RrfillCalendarApp.refillData.refillImage = UIImage(contentsOfFile: filePath) let _ = urls[0].stopAccessingSecurityScopedResource() } else { if fileManager.fileExists(atPath: urls[0].absoluteString) == false { let _ = urls[0].startAccessingSecurityScopedResource() do { try fileManager.copyItem(at: urls[0], to: URL(fileURLWithPath: filePath)) RrfillCalendarApp.refillData.refillImage = UIImage(contentsOfFile: filePath) print(filePath) } catch let error { print(error) } let _ = urls[0].stopAccessingSecurityScopedResource() } } } }