2010-06-06 23 views
2

我正在爲nsxmlparser的代表正在努力。當委託不是自我時nsxmlparser的OO模型

爲了構建我的Foos表,我需要進行兩種類型的webservice調用;一個用於整個桌子,另一個用於每一排。它本質上是一個主查詢,然後是詳細查詢,除了master-query-result-xml沒有返回足夠的信息,所以我需要查詢每一行的詳細信息。我沒有處理大量的數據。

反正 - 以前我只是用

NSXMLParser *parser = [[NSXMLParser alloc]init]; 
[parser setDelegate:self]; 
[parser parse]; 

和我在任何類中實現所有相應的委託方法
在嘗試在清潔度,我現在已經創建了兩個單獨的委託類和做過類似:

NSXMLParser *xp = [[NSXMLParser alloc]init]; 
MyMasterXMLParserDelegate *masterParserDelegate = [[MyMasterXMLParser]alloc]init]; 
[xp setDelegate:masterParserDelegate]; 
[xp parse]; 

除了作爲清洗劑(在我看來,至少),這也意味着每個-parser:didStartElement實現不花大部分時間試圖找出w ^這是他們解析的XML。

所以現在是問題的真正關鍵。

在我拆分代理之前,我還在實現委託方法的主類中創建了一個類級別的NSMutableArray,我只是在-parser:didEndElement找到'end '的每個記錄。

現在,代表處於不同的類中,我無法弄清楚如何讓「detail」委託類中的-parser:didEndElement將創建的對象「返回」到調用類中。至少,不是以一種乾淨的面向對象方式。我確信我可以用各種討厭的類方法來做到這一點。

這個問題有意義嗎? 謝謝。

回答

0

這個問題確實有道理(分裂也是如此)。如果我理解正確的話,您可以簡單地將結果數組屬性添加到詳細分析器委託,並在調用[xp parse]後從調用方讀取此屬性?

+0

當然。非常感謝! – richard 2010-06-07 06:37:52

相關問題