2009-02-04 8 views
2

J'essaie de remplir un NSArray avec une collection d'images dans les ressources. Cependant, pour une flexibilité maximale, j'essaie d'éviter de coder en dur les noms de fichiers ou même combien de fichiers il y a.Comment énumérer et charger des ressources dans une application iPhone?

Normalement, je ferais quelque chose comme cet exemple de l'exemple de code à la pomme:

kNumImages = 5; //or whatever 
NSMutableArray *images; 
for (i = 1; i <= kNumImages; i++) 
{ 
    NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", i]; 
    [images addObject:[UIImage imageNamed:imageName]; 
} 

Cependant, je suis en train d'éviter tout kNumImages. Existe-t-il un moyen d'exécuter une regex ou quelque chose sur les ressources?

Répondre

11

Voici un extrait qui fait juste que de mon iPhone app

// Load item icons 
paths = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil]; 
for (NSString *filename in paths) { 
    filename = [[filename componentsSeparatedByString:@"/"] lastObject]; 
    if ([filename hasPrefix:@"ItemIcon"]) { 
    [UIImage imageNamed:filename]; 
    } 
} 

boucle sur toutes les ressources qui ont une extension .png, et le nom du fichier commence par « ItemIcon » il se charge dans construit dans le cache de UIImage .

Si vous les avez dans un répertoire spécifique, vous devrez spécifier l'argument indirect:.

+0

Que faire si j'ai des types d'images mixtes? Ils auront tous des noms comme image # .ext, mais ext peut varier. – Sam

+0

Oh, je pense avoir une réponse à cela: paths = [[NSBundle mainBundle] pathsForResourcesOfType: nil inDirectory: nil]; puis filtrez ceux que je ne veux pas dans la boucle for. – Sam

+0

Si vous passez nil en tant que chaîne d'extension, il renverra tous les fichiers, dont vous pourrez ensuite tester les noms à partir de là. Mais cela peut avoir des problèmes de performance en fonction de ce que vous faites et du nombre de fichiers que vous avez. Ou vous pouvez utiliser 2 boucles, une pour chaque type d'extension. –

Questions connexes