Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding a filename with a wildcard in iPhone SDK

I am trying to write a program that creates dynamically named .csv files that need to be either retrieved or deleted at a later run date. What I am trying to do is this:

I would like to run an algorithm that will find out if any of these types of files exist. For example, if I dynamically name the file something like foobar##.csv with the ## indicating a number being dynamically being generated and appended to the filename, I would like to find if any foobar##.csv file exists regardless of the number used. Normally I would use a line of code like this:

NSString *dataFileName = [[self documentPath] stringByAppendingPathComponent:@"foobar01.csv"];

Right now I just use a loop that cycles through each value and trips a bool if one is found, but I know this isn't a best practice as it limits the possible filename numbers the user can use. Any insight into how I could use some sort of wildcard on a search like this would be appreciated.

Also, I would want to create a method that would delete any .csv files the program finds, but I'm assuming that the method used to solve the above algorithm can be used for the deletion one as well.

like image 576
MarcZero Avatar asked Feb 24 '23 22:02

MarcZero


2 Answers

Wildcard match To match using a wildcard string the query can use like instead of the comparison operator and include the “*” (match zero or more characters) or “?” (match exactly 1 character) as wildcards as follows:

NSString *match = @"imagexyz*.png";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", match];
NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];

http://useyourloaf.com/blog/2010/7/27/filtering-arrays-with-nspredicate.html

like image 130
Rakka Rage Avatar answered Feb 27 '23 10:02

Rakka Rage


Take a look at NSFileManagers contentsOfDirectoryAtPath:error: method. It will return an array with strings containing the names of all objects (files and directories) of the directory in question.

You could then enumerate through that array and check for occurances of "foobar" in those strings. Either do something to the files you found right away or store the "positive" filenames in another array for later processing.

like image 34
Toastor Avatar answered Feb 27 '23 11:02

Toastor