Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cocoa-Touch - Loading a text file into an array

Whats wrong with my code.. I want it to read a text file like

Item1

Item2

Item3

Item4

Item5

and parse it into an array so each line is a separate object in thus array.

When you check the console it prints (null)

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

I put the txt file in my project and copied it to destination.

like image 810
user377419 Avatar asked Jul 21 '10 00:07

user377419


1 Answers

Firstly, can you verify that the file exists where you are looking and is readable? Use

[[NSFileManager defaultManager] isReadableFileAtPath:aPath];

Secondly, what is in your file. The behaviour of initWithContentsOfFile:

The array representation in the file identified by aPath must contain only property list objects (NSString, NSData, NSArray, or NSDictionary objects).

Is your file a valid plist xml file?

InResponse

You cannot use the NSArray constructor initWithContentsOfFile: to parse a regular text file.

Instead you can read the file content into memory and parse it yourself into an array. For your example you could use

//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];
like image 102
Akusete Avatar answered Nov 09 '22 03:11

Akusete