IOS 13デバイスで、ファイルサイズを取得しようとするとFileManagerが権限エラーを返します。
do {
let attr = try FileManager.default.attributesOfItem(atPath: my_file_path) //--> Getting nil
fileSize = attr[FileAttributeKey.size] as! UInt64
} catch {
print("Error: \(error)")
}
返されたエラー:
エラードメイン= NSCocoaErrorDomainコード= 257「ファイル "trim.1A9FFC19-EE2C-438A-BF3D-97E05A97EF9E.MOV」は、表示する権限がないため、開くことができませんでした。」 UserInfo = {NSFilePath =/private/var/mobile/Containers/Data/PluginKitPlugin/ADB8684E-12B5-451D-A20F-158B899BB3DD/tmp/trim.1A9FFC19-EE2C-438A-BF3D-97E05A97EF9E.MOV、NSUnderlyingError = 0x = NSPOSIXErrorDomain Code = 1 "操作は許可されていません"}}
この問題は、iOS 13にアップデートした後にのみ発生しました。以前のバージョンでは、すべてが正常に機能しています。
iOS 13 SDKは写真アプリを別のアプリと見なすため、イメージピッカーコントローラーを閉じると、ビデオのURLは無効になります。
AWSにビデオをアップロードしようとする前に問題がありました。一時フォルダーを作成し、既存のビデオのURLパスをコピーしてからImage-pickerを閉じます。
func createDirectory(videoURL:URL){
let Directorypath = getDirectoryPath()
var objcBool:ObjCBool = true
let isExist = FileManager.default.fileExists(atPath:Directorypath,isDirectory: &objcBool)
// If the folder with the given path doesn't exist already, create it
if isExist == false{
do{
try FileManager.default.createDirectory(atPath: Directorypath, withIntermediateDirectories: true, attributes: nil)
}catch{
print("Something went wrong while creating a new folder")
}
}
let fileManager = FileManager()
do {
if fileManager.fileExists(atPath:Directorypath) {
try? fileManager.removeItem(at: URL(fileURLWithPath:Directorypath))
}
try fileManager.copyItem(at:videoURL.absoluteURL, to: URL(fileURLWithPath:Directorypath))
self.imagePicker.dismiss(animated: true, completion:nil)
}catch let error {
print(error.localizedDescription)
}
}