DocumentDirectory
にPDF=ファイルがあります。
ユーザーが選択した場合、このPDFファイルを別の名前に変更できるようにしたい。
このプロセスを開始するUIButton
があります。新しい名前はUITextField
から取得されます。
どうすればいいですか?私はSwiftが初めてで、これに関するObjective-Cの情報しか見つけられず、変換に苦労しています。
ファイルの場所の例は次のとおりです。
/var/mobile/Containers/Data/Application/39E030E3-6DA1-45FF-BF93-6068B3BDCE89/Documents/Restaurant.pdf
ファイルが存在するかどうかを確認する次のコードがあります。
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")
}
ファイルの名前を変更するには、NSFileManagerのmoveItemAtURL
を使用できます。
同じ場所でmoveItemAtURL
を使用してファイルを移動しますが、2つの異なるファイル名を使用することは、「名前変更」と同じ操作です。
簡単な例:
スイフト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)
}
NSURLでアイテムの名前を変更する簡単な方法があります。
url.setResourceValue(newName, forKey: NSURLNameKey)