Subs Dba
Subs Dba

Reputation: 9

appendingPathComponent' is unavailable: Use appendingPathComponent on URL instead.a

I am using Swift 4, Xcode 9, and development target iOS 11.0.

I am trying to append a custom folder (MyFolder) to the path variable.

let outputFilePath = (NSTemporaryDirectory() as NSString).appending("MyFolder").appendingPathComponent((outputFileName as NSString).appendingPathExtension("mov")!)

But builder is giving error message:

appendingPathComponent' is unavailable: Use appendingPathComponent on URL instead.

I know, I am doing some silly mistake. Can you kindly help me in this?

Upvotes: 0

Views: 6253

Answers (2)

Arun Kumar
Arun Kumar

Reputation: 798

Use this line

URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("MyFolder").appendingPathComponent(outputFileName).appendingPathExtension("mov")

instead of

(NSTemporaryDirectory() as NSString).appending("MyFolder").appendingPathComponent((outputFileName as NSString).appendingPathExtension("mov")!)

This will return you a url and use url.Path to get its path in string . Hope this helps you.

Upvotes: 1

iOS Geek
iOS Geek

Reputation: 4855

Check below code for reference in document Directory

class func getDocumentsDirectory() -> URL {
        let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let dataPath = documentsDirectory.appendingPathComponent("FolderName")

        do {
            try FileManager.default.createDirectory(atPath: dataPath.path, withIntermediateDirectories: true, attributes: nil)
        } catch let error as NSError {
            print("Error creating directory: \(error.localizedDescription)")
        }
        return dataPath
    }

For Appending Files in Folder You can use this

//name for file to be added 
let uuid = UUID().uuidString
// storing a Audio File in Directory 
let audioFilename = getDocumentsDirectory().appendingPathComponent("\(uuid).m4a")

To get Names of Files Available in the respected Folder created

    //This function returns a Array with file names Available
    class func getListOfRecordingsAvailable() -> [String] {
            var fileNameArray = [String]()
            let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
            let myFilesPath = documentDirectoryPath.appending("/FolderName")
            let files = FileManager.default.enumerator(atPath: myFilesPath)

            while let file = files?.nextObject() {
                //myfilesPath - Path
                //file - fileName
                fileNameArray.append(file as! String)
            }

            print(fileNameArray)
            return fileNameArray


}

Upvotes: 0

Related Questions