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