iOS 9 leyó el permiso del file

En iOS 9+ obtengo un cero en cualquier bash de leer del file. El file en este caso es una ruta de file de image.
utilizando

NSData(contentsOfFile: stringpath, options: NSDataReadingOptions.DataReadingUncached) 

o

 NSData(contentsOfFile: stringpath) 

Comportamiento:
He eliminado el "file: //" de la ruta y ahora tiene un problema de permissions.

Error de dominio = NSCocoaErrorDomain Code = 257 "El file" IMG_0048.JPG "no se pudo abrir porque no tiene permiso para verlo". UserInfo = {NSFilePath = / var / mobile / Media / DCIM / 100APPLE / IMG_0048.JPG, NSUnderlyingError = 0x13f978f50 {Error Domain = NSPOSIXErrorDomain Code = 1 "Operación no permitida"}}

He agregado NSAllowArbitraryLoads y lo NSAllowArbitraryLoads establecido como verdadero.
He intentado search el file yo mismo usando " NSSearchPathDirectory ", sin embargo, las routes no coinciden de ninguna manera

Encontré este error porque estaba intentando acceder a múltiples files en el mismo bloque. La solución que funcionó para mí fue cambiar la estructura del código de tal manera que cada url de file se obtuvo, luego se leyó de, antes de intentar get la siguiente url de file.

Lo más probable es que obtenga este error, porque las aplicaciones de iOS solo tienen acceso a los files dentro de su entorno limitado. Consulte la documentation de Apple en los filesystems para get más información.

En su Aplicación, no tiene permiso para acceder al file de /var/mobile/Media/DCIM/100APPLE/IMG_0048.JPG , debido a Sandboxing.

Entonces, hagas lo que hagas, no puedes inicializar NSData o UIImage con la ruta del file. Pero puede acceder al file de /var/mobile/Media/DCIM/100APPLE/xxx.mov con AVURLAsset . En mi aplicación, extrajo los datos en lugar de la URL de la galería por el kit de Fotos y el UIImage inicializado con los datos.

 PHImageManager.default().requestImageData( for: assetObject!, options: options, resultHandler: { data, _, _, _ in if data != nil { self.assetUrl = movieMaker.createMovieFrom(imageData: data!, duration: Int(CXPreparetValue.imageDuration)) } }) 

¡esto funciona para mi! Si tienes otras opiniones, dime.

En mi caso, los permissions del file eran demasiado restrictivos, así que no pude leer el file.

Agregar permissions de lectura + escritura al file antes de acceder a él lo resolvió.

 do { // Retrieve any existing attributes var attrs = try FileManager.default.attributesOfItem(atPath: stringpath) let existing = (attrs as NSDictionary).filePosixPermissions() // Set the read+write value in the attributes dict attrs[.posixPermissions] = existing | 0b110000000 // Update attributes try FileManager.default.setAttributes(attrs, ofItemAtPath: stringpath) // Read data from file let data = try Data(contentsOf: URL(fileURLWithPath: stringpath, isDirectory: false), options: .uncached) print("success: \(data.count)") } catch { print(error) }