J'ai un fichier PDF dans mon DocumentDirectory
.
Je veux que l'utilisateur puisse renommer ce fichier PDF en quelque chose d'autre s'il le souhaite).
J'aurai un UIButton
pour démarrer ce processus. Le nouveau nom proviendra d'un UITextField
.
Comment puis-je faire cela? Je suis nouveau à Swift et je n'ai trouvé que des informations sur Objective-C à ce sujet et j'ai du mal à les convertir.
Un exemple de l'emplacement du fichier est:
/var/mobile/Containers/Data/Application/39E030E3-6DA1-45FF-BF93-6068B3BDCE89/Documents/Restaurant.pdf
J'ai ce code pour voir si le fichier existe ou non:
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")
}
Pour renommer un fichier, vous pouvez utiliser moveItemAtURL
de NSFileManager.
Déplacer le fichier avec moveItemAtURL
au même emplacement mais avec deux noms de fichiers différents est la même opération que "renommer".
Exemple 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
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)
}
Il existe un moyen plus simple de renommer un élément sur une NSURL donnée.
url.setResourceValue(newName, forKey: NSURLNameKey)