Sudzc deserializeAsDictionary: Überschriebenes Wörterbuch
Der von Sudzc generierte Code überschreibt das Schreiben eines Wörterbuchs für deserialisierte Knoten. Wenn ich das NSLog verwende (@ "The Child Node:% @", [[element children] objectAtIndex: 0] stringValue]); Es schreibt jedes Mal die richtigen Elemente aus, wenn es durchgelaufen ist. Wenn ich versuche, die Ergebnisse in Code abzurufen, ist nur der letzte verfügbar (Jackson 3). Was mache ich falsch?
<code>// Deserializes the element in a dictionary. +(id)deserializeAsDictionary:(CXMLNode*)element { if([element childCount] == 1) { CXMLNode* child = [[element children] objectAtIndex:0]; if([child kind] == CXMLTextKind) { NSLog(@"The Child Node: %@", [[[element children] objectAtIndex:0] stringValue]); return [[[element children] objectAtIndex:0] stringValue]; } } NSMutableDictionary* d = [NSMutableDictionary dictionary]; for(CXMLNode* child in [element children]) { id v = [Soap deserialize:child]; if(v == nil) { v = [NSNull null]; } [d setObject:v forKey:[child name]]; } return d; } </code>
NSLog:
<code>2012-04-19 14:13:07.802 Management[3043:10703] Hopefully Child: Allen 2012-04-19 14:13:07.803 Management[3043:10703] Hopefully Child: 1 2012-04-19 14:13:07.804 Management[3043:10703] Hopefully Child: John 2012-04-19 14:13:07.804 Management[3043:10703] Hopefully Child: 2 2012-04-19 14:13:07.805 Management[3043:10703] Hopefully Child: Jackson 2012-04-19 14:13:07.805 Management[3043:10703] Hopefully Child: 3 </code>
XML:
<code><TC diffgr:id="TC1" msdata:rowOrder="0"> <CSHR_POS_NAME>Allen</CSHR_POS_NAME> <CSHR_NUM>66</CSHR_NUM> </TC> <TC diffgr:id="TC2" msdata:rowOrder="1"> <CSHR_POS_NAME>John</CSHR_POS_NAME> <CSHR_NUM>2</CSHR_NUM> </TC> <TC diffgr:id="TC3" msdata:rowOrder="2"> <CSHR_POS_NAME>Jackson</CSHR_POS_NAME> <CSHR_NUM>3</CSHR_NUM> </TC> </code>