2010-08-03 5 views
1

Je suis en train de créer un tableau de NSStrings du contenu d'un dossier que je l'ai traîné dans mon projet ... mais quand je compte les éléments du tableau par la suite, il est revient toujours avec 0;Tableau de NSStrings de noms de fichiers dans un dossier?

Donc, mon dossier dans mon projet se présente comme suit

-Cards 
    -Colors 
    Blue.png 
    Green.png 
    Orange.png 
    Yellow.png 
    Purple.png 
    Black.png 

Et mon code qui tente d'obtenir la liste des fichiers (les PNGs de couleur) est

NSError *error = nil; 
NSString *pathString = [[NSString alloc] init]; 
pathString = [[NSString alloc] initWithString:@"/Cards/Colors/"]; 
NSArray *fileList = [[NSArray alloc] init]; 
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error]; 
[pathString release]; 
NSLog(@"%@", error); 
// this is always 0 
NSLog(@"file list has %i items", [fileList count]); 

Le NSError je reçois est

Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x596db00 {NSUserStringVariant=(
    Folder 
), NSFilePath=/Cards/Color/, NSUnderlyingError=0x5925ef0 "The operation couldn’t be completed. No such file or directory"} 

Est-ce que je ne me suis pas trompé?

Répondre

6

Vous pathString à initialiser le chemin absolu /Cards/Colors/. Ce chemin est un chemin à l'échelle du système, donc sur l'iPhone, loin du bac à sable de votre application.

Essayez ceci:

NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Cards/Colors" ofType:nil]; 
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error: &error]; 

(Notez que la façon dont vous avez votre code dans la question, vous alloc/init fileList, puis fuir immédiatement l'objet en lui affectant les résultats de contentsOfDirectoryAtPath:error: C'est. un bug.)

+0

Merci, le pathString est nul après la première ligne, et à cause de ce que je reçois un « *** en raison de l'application Mettre fin exception uncaught « NSInvalidArgumentException » » sur la ligne suivante. Je me demande si j'ajoute les dossiers correctement ..? – cannyboy

+0

Ça pourrait être ça. Je ne pense pas qu'un groupe Xcode devienne automatiquement un répertoire dans le bundle. Il se pourrait aussi que 'pathForResource: ofType:' ne fonctionne pas pour les répertoires. Dans ce cas, utilisez '- [NSBundle bundlePath]' pour obtenir le chemin à la racine du faisceau, puis '- [NSString stringByAppendingPathComponent:]' pour accéder à votre sous-répertoire. –

Questions connexes