2012-01-31 116 views
0

我有一個需要解析的逗號分隔文件。它看起來像這樣:ios解析文本文件

... "John", "Smith", "New York", "10038" ...

我處理這些記錄每個文件約1000個。我的計劃是將它們解析成dictionary

從我迄今爲止發現的,我應該使用NSInputStream。我當前的代碼如下所示:

firstViewController.m

... 
- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    GruParser *stream = [[GruParser alloc] init]; 
    [stream parse:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"gru"]]; 
} 
... 

GruParser.m 16行(BAD_ACCESS)

#import "GruParser.h" 

@implementation GruParser 

-(id)init { 
    if(self = [super init]) { 
     dict = [NSMutableDictionary alloc]; 
    } 
    return self; 
} 

-(void)parse:(NSString *)path { 
    NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:path]; 
    //NSInputStream *stream = [NSInputStream inputStreamWithURL:[NSURL URLWithString:@"http://www.w3schools.com/xml/note.xml"]]; 

    [stream setDelegate:self]; 
    [stream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
    [stream open]; 
    NSLog(@"%@", @"parse"); 
} 

-(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode { 
    NSLog(@"%@", @"stream event"); 
} 

@end 

main.m崩潰,因爲我是4.2的調試小白我我不知道我做錯了什麼。但是,日誌說「流」。我很確定我在碰撞[stream open]。有關下一步的任何建議?

回答

0

您需要使用GruParser *stream = [[GruParser alloc] init];而不是GruParser *stream = [GruParser alloc]; - 您將創建一個未初始化的對象,從而導致崩潰。

+0

我補充說(對我的代碼和我的編輯),但我仍然得到相同的控制檯以及相同的崩潰。 – Jacksonkr 2012-01-31 21:12:21

+0

你能從控制檯粘貼確切的輸出嗎? – jrtc27 2012-01-31 21:46:49

+0

你也必須調用'dict = [[NSMutableDictionary alloc] init]'。 – 2012-01-31 23:52:50