On Thu, Jul 28, 2011 at 1:35 PM, Chris Paveglio
<[email protected]> wrote:
> I have an array of file paths, and I need to filter them to return only files
> with extensions I have in another array. So any files that end with {.tif,
> .png, .eps} etc.
> I'm looking at using: - (NSArray
> *)filteredArrayUsingPredicate:(NSPredicate *)predicate
> Is this the best option for this kind of filter? Is there any other way,
> aside from "doing it the long long way", i.e. enumerating over each's item's
> pathExtension in array1 through each file extension in array2?
Actually, the "long way" might be your best bet after all.
You could use -[NSArray indexesOfObjectsWithOptions:passingTest:] to
enlist GCD to do a parallel filtering of all your strings:
// warning: typed in mail client
NSArray *validExtensions = [NSArray arrayWithObjects:@".tif", @".png",
@".eps", nil];
NSIndexSet *indexes = [myFilePaths
indexesOfObjectsWithOptions:NSEnumerationConcurrent passingTest:^(id
obj, NSUInteger idx, BOOL *stop) {
NSString *filePath = (NSString *)obj;
for (NSString *extension in validExtensions) {
if ([[string pathExtension] isEqualToString:extension])
return YES;
}
return NO;
}];
NSArray *filteredPaths = [myFilePaths objectsAtIndexes:indexes];
--Kyle Sluder
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]