SORU
31 Ocak 2009, CUMARTESİ


Bir topak ile bir dizindeki dosyaların listesini almak

Saçma sapan bir şeyden belirli bir dizin için bir topak ile dosyaların listesini almak için bir yol bulamıyorum.

Şu anda çizgisinde bir şey başıma kaldı:

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSArray *dirContents = [[NSFileManager defaultManager] 
                        directoryContentsAtPath:bundleRoot];

..ve bu berbat bir şey istemiyorum şeyler, dışarı sıyırma sonra. Ama gerçekten arama yapabilmek için istediğim bir şey için "foo.*"yerine tüm dizin istiyor, ama böyle bir şey bulabilmiş değilim. jpg

Nasıl yapıyorsun bunu?

CEVAP
25 Mayıs 2009, PAZARTESİ


Bu oldukça kolay NSPredicate yardımı ile, yani elde edebilirsiniz:

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *dirContents = [fm contentsOfDirectoryAtPath:bundleRoot error:nil];
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"];
NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:fltr];

Eğer NSURL ile yerine yapmanız gereken bu gibi görünüyor:

NSURL *bundleRoot = [[NSBundle mainBundle] bundleURL];
NSArray * dirContents = 
      [fm contentsOfDirectoryAtURL:bundleRoot
        includingPropertiesForKeys:@[] 
                           options:NSDirectoryEnumerationSkipsHiddenFiles
                             error:nil];
NSPredicate * fltr = [NSPredicate predicateWithFormat:@"pathExtension='jpg'"];
NSArray * onlyJPGs = [dirContents filteredArrayUsingPredicate:fltr];

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunliu

    bunliu

    2 Mayıs 2007
  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Lamborghini

    Lamborghini

    13 Aralık 2005