私のプロジェクトでは、複数のサービスを実装して応答を得ています。1 つのデータ セットを応答として返すその 1 つの WSDL サービスのうち、
+ (id)deserializeAsDictionary:(CXMLNode*)element {
NSLog(@"deserializeAsDictionary = %@, children: %d", element.stringValue, [element childCount]);
if([element childCount] == 1) {
CXMLNode* child = [[element children] objectAtIndex:0];
if([child kind] == CXMLTextKind) {
NSLog(@"child %@ added", [child stringValue]);
return [[[element children] objectAtIndex:0] stringValue];
}
}
NSMutableDictionary* d = [NSMutableDictionary dictionary];
NSInteger i = 1;
NSString *objKey;
for(CXMLNode* child in [element children]) {
id v = [Soap deserialize:child];
if(v == nil) {
v = [NSNull null];
} else {
if([[child name] isEqualToString:@"(null)"]) {
objKey = [NSString stringWithFormat:@"%@",[child stringValue]];
} else if([[child name] isEqualToString:@"key"] || [[child name] isEqualToString:@"value"]) {
objKey = [NSString stringWithFormat:@"%@",[child name]];
} else {
objKey = [NSString stringWithFormat:@"%@%d",[child name],i++];
}
}
[d setObject:v forKey:objKey];
NSLog(@"child %@ added", objKey);
}
return d;
}
soap クラスはこのメソッドを使用して、そのデータ セットを辞書に変換します。IOS 5 では完全に動作しますが、ios 6 では動作しません。ios 6 ではアプリケーションがクラッシュし、「CXML copy with zone」というエラーが表示されます。この問題の修正を手伝ってください。