ios解析文本文件

ios解析文本文件,ios,xcode,ios5,xcode4.2,Ios,Xcode,Ios5,Xcode4.2,我需要解析一个逗号分隔的文件。它看起来像这样: 。。。“约翰”、“史密斯”、“纽约”、“10038”… 我每个文件处理大约1000条这样的记录。我的计划是将它们解析成一个字典 根据我目前的发现,我应该使用NSInputStream。我当前的代码如下所示: firstViewController.m GruParser.m main.m在第16行(坏访问)崩溃,由于我是一个4.2调试noob,我不确定我做错了什么。然而,日志上写着“流”。我很确定我在[stream open]上崩溃了。对下一步有什

我需要解析一个逗号分隔的文件。它看起来像这样:

。。。“约翰”、“史密斯”、“纽约”、“10038”…

我每个文件处理大约1000条这样的记录。我的计划是将它们解析成一个
字典

根据我目前的发现,我应该使用
NSInputStream
。我当前的代码如下所示:

firstViewController.m GruParser.m
main.m
在第16行(坏访问)崩溃,由于我是一个4.2调试noob,我不确定我做错了什么。然而,日志上写着“流”。我很确定我在
[stream open]
上崩溃了。对下一步有什么建议吗?

您需要使用
GruParser*stream=[[GruParser alloc]init]而不是
GruParser*stream=[GruParser alloc]-您创建了一个未初始化的对象,这会导致崩溃。

我添加了它(在我的代码和编辑中),但我仍然得到相同的控制台和相同的崩溃。您可以从控制台粘贴精确的输出吗?您还必须调用
dict=[[NSMutableDictionary alloc]init]
,但这不会是坠机的原因@Jackson-我们可以得到完整的崩溃消息吗?我在LLDB上,所以输出只是日志消息(现在只是“解析”)。请叫我n00b,因为我对此感到困惑,但我该如何做你需要我做的事情呢?我通常只是使用
NSLog
来“调试”。
...
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    GruParser *stream = [[GruParser alloc] init];
    [stream parse:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"gru"]];
}
...
#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