为什么我的NSXMLParser中的Object没有保留以前的值?

时间:2011-02-02 00:22:59

标签: objective-c cocoa-touch ios nsxmlparser

我正在解析一个大的xml并将其存储到一个临时的核心数据表中。我的解析器didEndElement方法如下所示:

-(void)parser:(NSXMLParser *)parser 
didEndElement:(NSString *)elementName 
 namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName{
    if ([elementName isEqualToString:@"reference_number"]) {
        [[self pdfDocument] setEducationDocumentReference:currentTextString];
    }
    if ([elementName isEqualToString:@"name"]) {
        [[self pdfDocument] setEducationDocumentName:currentTextString];
    }
    if ([elementName isEqualToString:@"type"]) {
        [[self pdfDocument] setEducationDocumentType:currentTextString];
    }
    if ([elementName isEqualToString:@"date"]) {
        [[self pdfDocument] setEducationDocumentDate:[dateFormatter dateFromString:currentTextString]];
    }
    if ([elementName isEqualToString:@"url"]) {
        [[self pdfDocument] setEducationDocumentURL:currentTextString];

        //If I uncomment the following, the app will try finding the previous set
        //values without any luck and crash.
        //if (![pdfDocument documentExistsInTemporaryTable]) {
        //  [pdfDocument saveDocumentToTemporaryTable];
        //}
    }
}

它清楚地将每个值分开,并且应该在将对象保存到临时表之前将其存储到pdfDocument对象中,但是当我尝试访问pdfDocument的任何先前设置的值时,我得到一个EXEC_BAD_ACCESS来自我能看到的是因为它找不到以前的pdfDocument变量的值。

我确定我犯了一个菜鸟错误,但是有人可以启发我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:0)

使用相同指针指向同一对象的问题。我选择的解决方案是通过简单地复制currentTextString来为每个值设置不同的实例。