• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Filter an array
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Filter an array


  • Subject: Re: Filter an array
  • From: Kyle Sluder <email@hidden>
  • Date: Thu, 28 Jul 2011 13:45:27 -0700

On Thu, Jul 28, 2011 at 1:35 PM, Chris Paveglio
<email@hidden> 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@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Filter an array
      • From: Kyle Sluder <email@hidden>
References: 
 >Filter an array (From: Chris Paveglio <email@hidden>)

  • Prev by Date: Re: NSFileManager - a cautionary tale
  • Next by Date: Re: Filter an array
  • Previous by thread: Filter an array
  • Next by thread: Re: Filter an array
  • Index(es):
    • Date
    • Thread