0

私のプロジェクトでは、複数のサービスを実装して応答を得ています。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」というエラーが表示されます。この問題の修正を手伝ってください。

4

1 に答える 1

1

iOS 6 で有効になっている ARC を使用して SOAP クラスを取得していると 思います。

于 2012-10-09T12:03:02.930 に答える