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()
}
}
}
}






