ios swift file-rename

ios - Renombrar archivo en DocumentDirectory



swift file-rename (2)

Hay una forma más fácil de cambiar el nombre de un elemento en cualquier NSURL.

url.setResourceValue(newName, forKey: NSURLNameKey)

Tengo un archivo PDF en mi DocumentDirectory .

Quiero que el usuario pueda cambiar el nombre de este archivo PDF a otra cosa si así lo desea.

Tendré un UIButton para iniciar este proceso. El nuevo nombre vendrá de un UITextField .

¿Cómo hago esto? Soy nuevo en Swift y solo he encontrado información de Objective-C sobre esto y estoy teniendo dificultades para convertirla.

Un ejemplo de la ubicación del archivo es:

/var/mobile/Containers/Data/Aplication/39E030E3-6DA1-45FF-BF93-6068B3BDCE89/Documents/Restaurant.pdf

Tengo este código para ver si el archivo existe o no:

var name = selectedItem.adjustedName // Search path for file name specified and assign to variable let getPDFPath = paths.stringByAppendingPathComponent("/(name).pdf") let checkValidation = NSFileManager.defaultManager() // If it exists, delete it, otherwise print error to log if (checkValidation.fileExistsAtPath(getPDFPath)) { print("FILE AVAILABLE: /(name).pdf") } else { print("FILE NOT AVAILABLE: /(name).pdf") }


Para cambiar el nombre de un archivo puede usar moveItemAtURL de moveItemAtURL .

Mover el archivo con moveItemAtURL en la misma ubicación pero con dos nombres de archivo diferentes es la misma operación que "cambiar el nombre".

Ejemplo simple:

Swift 2

do { let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] let documentDirectory = NSURL(fileURLWithPath: path) let originPath = documentDirectory.URLByAppendingPathComponent("currentname.pdf") let destinationPath = documentDirectory.URLByAppendingPathComponent("newname.pdf") try NSFileManager.defaultManager().moveItemAtURL(originPath, toURL: destinationPath) } catch let error as NSError { print(error) }

Swift 3

do { let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] let documentDirectory = URL(fileURLWithPath: path) let originPath = documentDirectory.appendingPathComponent("currentname.pdf") let destinationPath = documentDirectory.appendingPathComponent("newname.pdf") try FileManager.default.moveItem(at: originPath, to: destinationPath) } catch { print(error) }