Reputation: 14040
What I want to do seems simple enough: Get an array of filenames in a given "directory" on my app. But the more I play around with NSFileManager and NSBundle I find myself getting more lost...I just want to get the filenames of the files organized in a specific directory in my iPhone Xcode project...For example: The directory in question is called "Images" (created using "Add > New Group" under the project icon in Xcode) and contains 10 .png images. It seems simple but I am getting nowhere. I'd appreciate some help in finding the answer.
Q: How do I get an NSArray of filenames of all files in a given directory in my app?
Upvotes: 10
Views: 9477
Reputation: 794
Nowadays, this is how you do it:
Do what the solution for this post is tells you to do. I mean:
NSError *error = nil;
NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YourFolder"];
NSArray *yourFolderContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:yourFolderPath error:&error];
Upvotes: 1
Reputation: 25001
If you want the folder to be part of the App bundle, you need to create a folder reference inside the Resources group, instead of a group (it will show up in Xcode as a blue folder as opposed to the yellow one).
To do this, you drag the folder from Finder and select folder reference when prompted.
Once you have that, you should be able to get the contents of the folder with something like:
NSError *error = nil;
NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:@"YourFolder"];
NSArray *yourFolderContents = [[NSFileManager defaultManager]
contentsOfDirectoryAtPath:yourFolderPath error:&error];
Upvotes: 29
Reputation: 10296
The accepted answer's been deprecated for years now. The following should be used instead.
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error
Update: @macserv updated the accepted answer after I posted this.
Upvotes: 9