Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get file path in iPhone app

I have a problem accessing my files in my app.

I am currently using

//Directly from TileMap example from WWDC2010 NSString *tileDirectory = [[[NSBundle mainBundle] resourcePath]                             stringByAppendingPathComponent:@"Tiles"]; 

to access my tiles for my MKOverlay. This gives me this directory

/Users/xxxx/Library/Application Support/iPhone Simulator/4.2/Applications/9D62025C-C53B-472C-8309-xxxx/xxxx.app/Tiles

The x's is only for privacy reasons

I have my tiles in a folder called Tiles in the root of my application which is in Xcode in a group called Tiles which is in directly in the Resources group.

When I run my app, I get a simple error saying that it could not find my tiles at the generated directory (the one quote above) If I replace that piece of code and make it:

NSString *tileDirectory = @"/Users/xxxx/Documents/xxxx/Tiles"; 

Then my app works fine. This is obviously because it finds my tiles in its direct location on my Mac. This is fine for testing, but I need it to work on my iPhone/iPad.

This problem might be occurring due to:

  • The generated directory is incorrect.
  • The tile images aren't getting included in the builded .app file.

Either way, I have no clue of what to do to solve it.

How can I solve this problem?


[EDIT]

I changed that piece of code to:

NSString *tileDirectory = [[NSBundle mainBundle] resourcePath]; 

Now it works in simulator, because all files are in the apps root folder and I don't ask for it to enter another directory called "Tiles".

This runs with no error on the simulator, but when on my iPhone it gives the original error (just a different file path but also ending with /xxxx.app

How can I ensure a directory in my app file such as xxxx.app/Tiles - TileMap does this.

like image 515
Pangolin Avatar asked Jun 17 '11 15:06

Pangolin


People also ask

How do I see file path on iPhone?

Launch the native Files app on your iPhone or iPad. Make sure you're in the “Browse” section and select the location where your file is stored. Next, head over to the directory where the file is located and simply long-press on the file to access more options. Now, select “Info” to view all the information on the file.

How do I find a file path?

Click the Start button and then click Computer, click to open the location of the desired file, hold down the Shift key and right-click the file. Copy As Path: Click this option to paste the full file path into a document. Properties: Click this option to immediately view the full file path (location).


2 Answers

Since it is your files in your app bundle, I think you can use pathForResource:ofType: to get the full pathname of your file.

Here is an example:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"your_file_name"                                              ofType:@"the_file_extension"]; 
like image 172
Jue Wang Avatar answered Oct 01 '22 20:10

Jue Wang


Remember that the "folders/groups" you make in xcode, those which are yellowish are not reflected as real folders in your iPhone app. They are just there to structure your XCode project. You can nest as many yellow group as you want and they still only serve the purpose of organizing code in XCode.

EDIT

Make a folder outside of XCode then drag it over, and select "Create folder references for any added folders" instead of "Create groups for any added folders" in the popup.

like image 31
LuckyLuke Avatar answered Oct 01 '22 19:10

LuckyLuke