cpro90
cpro90

Reputation: 168

Xcode Project Folder Structure

I am using the latest XCode / Swift 3.0 and facing some problems:

I created a folder in /MyProject/MyProject/Assets/Subfolder1 and stored a few hundred .txt files in it to iterate over the files inside the Subfolder1 with the following code:

let fm = FileManager.default
fm.enumerator(atPath: "/MyProject/Assets/Subfolder1")?.forEach({ (e) in
    if let e = e as? String, let url = URL(string: e) {
        doSomethingWith(url.pathExtension)
    }
})

But I cannot find any files. I tried some variations ("/Assets/Subfolder1/" and "/MyProject/MyProject/Assets/Subfolder1"), all are not working.

What is the correct path that I have to specify?

Best Chris

Upvotes: 1

Views: 903

Answers (1)

BigSpicyPotato
BigSpicyPotato

Reputation: 739

First off, make sure you have added the actual folder to the Xcode project. You can do this simply by dragging and dropping the folder into your project. After you drag and drop, this window should appear

Add file window

Make sure you select Create folder references and Copy items if needed. This will make sure that the entire folder is constantly synced inside your Xcode project. Then to verify that the assets will be transferred to your device when building the project, go into Build Phases and then to Copy Bundle Resources and you should see the name of the folder, in my case, I have named it TextFiles.

enter image description here

Now because you have added your folder into the application's Main Bundle, you can access it by doing this:

let fm = FileManager.default
let path = Bundle.main.resourcePath?.appending("/TextFiles")
fm.enumerator(atPath: path!)?.forEach({ (e) in
    if let e = e as? String, let url = URL(string: e) {
        doSomethingWith(url.pathExtension)
    }
})

The reason we need to do the Bundle.main.resourcePath before it and can't simply say /TextFiles is because if we say /TextFiles it looks for that folder starting from the system root, which is why it wasn't working before. It would be like having a folder in C:/Users/Abc123/Documents/TextFiles but the system is looking for it in C:/TextFiles.

Upvotes: 1

Related Questions