2011-02-02 53 views
0

我正在解析一個大的XML並將其存儲到臨時核心數據表中。我的解析器didEndElement方法如下所示:爲什麼我的NSXMLParser中的對象不保留以前的值?

-(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變量的值。

我敢肯定我在做一個菜鳥的錯誤,但是有人能讓我朝這個正確的方向發展嗎?

+0

您的問題在於代碼的其他部分...您需要將`documentExistsInTemporaryTable`的代碼發佈到您的程序崩潰的地方!你是怎麼指望我們在沒有看到你的程序崩潰的代碼的情況下找到你的bug?** – Yuji 2011-02-02 03:01:32

回答

0

問題在於使用同一個指針指向同一個對象。我選擇的解決方案是通過複製currentTextString爲每個值設置不同的實例。

相關問題