2010-07-21 6 views
6

Quel est le problème avec mon code .. Je le veux lire un fichier texte commeCocoa-Touch - Le chargement d'un fichier texte dans un tableau

Item1

Item2

Item3

Item4

item5

et l'analyser dans un tableau de sorte que chaque ligne est une soi parate objet dans ainsi tableau.

Lorsque vous vérifiez la console, il imprime (null)

-(void)parseIntoArray{ //parse the files into seprate arrays. 
    allPools = [[NSMutableArray alloc] initWithContentsOfFile:@"ALL_POOLS_NAMES"]; 
    NSLog(@"%@",allPools); 
} 

Je mets le fichier txt dans mon projet et recopié à destination.

Répondre

13

Premièrement, pouvez-vous vérifier que le fichier existe bien et est lisible? Utilisez

[[NSFileManager defaultManager] isReadableFileAtPath:aPath]; 

En second lieu, ce qui est dans votre dossier. Le comportement de initWithContentsOfFile:

La représentation du tableau dans le fichier identifié par aLigne doit contenir uniquement la liste des propriétés des objets (objets NSString, NSData, NSArray ou NSDictionary).

Votre fichier est-il un fichier XML plist valide?

InResponse

Vous ne pouvez pas utiliser le constructeur NSArray initWithContentsOfFile: pour analyser un fichier texte normal. Au lieu de cela, vous pouvez lire le contenu du fichier en mémoire et l'analyser vous-même dans un tableau. Pour votre exemple, vous pouvez utiliser

//pull the content from the file into memory 
NSData* data = [NSData dataWithContentsOfFile:aPath]; 
//convert the bytes from the file into a string 
NSString* string = [[[NSString alloc] initWithBytes:[data bytes] 
              length:[data length] 
              encoding:NSUTF8StringEncoding] autorelease]; 

//split the string around newline characters to create an array 
NSString* delimiter = @"\n"; 
NSArray* items = [string componentsSeparatedByString:delimiter]; 
+0

édité OP pour que ce soit plus clair. – user377419

+0

Hmm j'ai une erreur .. 'encoding: NSUTF8StringEncoding]];' il dit qu'il manque un ':' avant le ']' manque-t-il un argument? – user377419

+1

@ shorty876: Non, il en a un de trop [caractères au début. – JeremyP

Questions connexes