Xcode 7.3.1, Swift 2.2
The code I have below is renaming the file as expected. My issue is that I would like to enter the "New File Name" without an extension in the Alert text input field. Then once the user presses "Yes", the file extension "m4u" gets added to the new name and ultimately rename the file "New File Name.m4u". I do not want the user to have to deal with file extensions.
Any assistance would be greatly appreciated.....
func askToRename(row:Int) {
let recording = self.arrayRecordings[row]
let recordingURL = self.arrayRecordingsURL[row]
let alert = UIAlertController(title: "Rename",
message: "Rename Recording \(recording)?",
preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Yes", style: .Default, handler: {[unowned alert] action in
print("yes was tapped \(self.arrayRecordingsURL[row])")
if let textFields = alert.textFields{
let tfa = textFields as [UITextField]
let text = tfa[0].text
let url = NSURL(fileURLWithPath: text!)
self.renameRecording(recordingURL, to: url)
}
}))
alert.addAction(UIAlertAction(title: "No", style: .Default, handler: {action in
print("no was tapped")
}))
alert.addTextFieldWithConfigurationHandler({textfield in
textfield.placeholder = "Enter a filename"
textfield.text = "\(recordingURL.lastPathComponent!)"
})
self.presentViewController(alert, animated:true, completion:nil)
}func renameRecording(from:NSURL, to:NSURL) {
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let toURL = documentsDirectory.URLByAppendingPathComponent(to.lastPathComponent!)
print("renaming file \(from.absoluteString) to \(to) url \(toURL)")
let fileManager = NSFileManager.defaultManager()
fileManager.delegate = self
do {
try NSFileManager.defaultManager().moveItemAtURL(from, toURL: toURL)
} catch let error as NSError {
print(error.localizedDescription)
} catch {
print("error renaming recording")
}
dispatch_async(dispatch_get_main_queue(), {
self.listRecordings()
/
})
}func listRecordings() {
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
do {
let urls = try NSFileManager.defaultManager().contentsOfDirectoryAtURL(documentsDirectory, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles)
self.arrayRecordingsURL = urls.filter( { (name: NSURL) -> Bool in
return name.lastPathComponent!.hasSuffix("m4a")
})
} catch let error as NSError {
print(error.localizedDescription)
} catch {
print("something went wrong listing recordings")
}
}extension ViewControllerFileManager: NSFileManagerDelegate {
func fileManager(fileManager: NSFileManager, shouldMoveItemAtURL srcURL: NSURL, toURL dstURL: NSURL) -> Bool {
print("should move \(srcURL) to \(dstURL)")
return true
}
}