2011-03-09 10 views

Respuesta

21

Usted puede lograr que la adaptación de la siguiente código:

NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: 
        [[NSBundle mainBundle] bundlePath] error:nil]; 
NSArray *pngs = [files filteredArrayUsingPredicate: 
       [NSPredicate predicateWithFormat:@"self ENDSWITH[cd] '.png'"]]; 
NSLog(@"%@", pngs); 

Al ejecutar este código, verá la lista de PNG en su paquete. Cambiar el predicado para que coincida con el prefijo que desea:

NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: 
        [[NSBundle mainBundle] bundlePath] error:nil]; 
NSArray *filesWithSelectedPrefix = [files filteredArrayUsingPredicate: 
            [NSPredicate predicateWithFormat:@"self BEGINSWITH[cd] 'prefix'"]]; 
NSLog(@"%@", filesWithSelectedPrefix); 
+0

funcionó bien .. sry para la respuesta tardía ... – xydev

+0

@vfn me ahorras mi tiempo gracias. –

1

Actualización de Swift 4.0:

En mi caso, yo estaba buscando archivos que comenzaron con fileName-1.png donde podría haber otros archivos con la fileName prefijo.

1) Pensé en usar expresiones regulares, pero dividir la cadena era más rápido y más fácil, así que fui por esa ruta para obtener el prefijo.

let myKnownFileNameString = "fileName-1.png" 
let filePrefix = myKnownFileNameString.split(separator: "-").first 

2) Crear una matriz vacía para almacenar las imágenes que encuentre:

var imageArray: [UIImage] = [] 

3) A continuación, obtener las direcciones URL desde el haz, filter ellos y map las direcciones URL a UIImage casos:

if let filePrefix = filePrefix, let fileURLs = Bundle.main.urls(forResourcesWithExtension: "png", subdirectory: nil) { 
    imageArray = fileURLs.filter{ $0.lastPathComponent.range(of: "^\(filePrefix)", options: [.regularExpression, .caseInsensitive, .diacriticInsensitive]) != nil } 
         .map{ UIImage(contentsOfFile: $0.path)! } 
} 

A partir de ahí, tienes una serie de imágenes con las que puedes hacer cosas (animarlas en un UIImageView, etc.)

+1

Existen formas más adecuadas y * rápidas, por ejemplo, obtienes todas las URL con extensión dada con 'Bundle.main.urls (forResourcesWithExtension:" png ", subdirectory: nil)' y en lugar de 'NSPredicate' use' .filter { $ 0.range (de: "^ \ (filePrefix)", opciones: [.regularExpression, .caseInsensitive, .diacriticInsensitive])! = Nil} ' – vadian

+0

¡Gracias! Vi que la respuesta existente a mi pregunta era algo crujiente, así que arrojé algo juntos. Lo actualizaré según su sugerencia. – Adrian

+1

He editado tu respuesta con otra mejora * swifty *. – vadian

Cuestiones relacionadas