【问题标题】:ios parsing a text fileios解析文本文件
【发布时间】:2012-01-31 21:06:30
【问题描述】:

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

... "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

#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 在第 16 行 (BAD_ACCESS) 崩溃,由于我是 4.2 调试新手,我不确定自己做错了什么。但是,日志显示“流”。我很确定我在[stream open] 上崩溃了。对后续步骤有何建议?

【问题讨论】:

    标签: ios xcode ios5 xcode4.2


    【解决方案1】:

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

    【讨论】:

    • 我添加了它(到我的代码和我的编辑中),但我仍然得到相同的控制台以及相同的崩溃。
    • 你能粘贴控制台的确切输出吗?
    • 您也必须致电dict = [[NSMutableDictionary alloc] init]
    • 是的,但这不是导致崩溃的原因。 @Jackson - 我们可以得到完整的崩溃消息吗?
    • 我在 LLDB 上,所以输出只是日志消息(现在只是“解析”)。打电话给我 n00b 对此感到困惑,但是我该怎么做你需要我做的事情?我大多只是使用NSLog 来“调试”。
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2012-10-09
    • 2015-01-07
    • 1970-01-01
    相关资源
    最近更新 更多