私はこの応答を持っています:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:SurfaceElementListResponse xmlns:ns2="http://isiows.isiom.fr/schema/DmdCreation" xmlns:ns3="http://isiows.isiom.fr/schema/Error" xmlns:ns4="http://isiows.isiom.fr/schema/DmdDetail">
<SurfaceElementListResult>
<idSurfaceElement>9482</idSurfaceElement>
<name>R04-</name>
<type>NIVEAU</type>
</SurfaceElementListResult>
<SurfaceElementListResult>
<idSurfaceElement>9486</idSurfaceElement>
<name>Zone A</name>
<type>ZONE</type>
</SurfaceElementListResult>
</ns2:SurfaceElementListResponse>
</soap:Body>
</soap:Envelope>
上記の 1 つを除く他のすべての WS 応答で機能するため、各オブジェクトが NSDictionary に逆シリアル化されるのを待っています。他のレスポンスと比較すると、SOAP.m:+ (id) deserialize: (CXMLNode*) element
メソッドではステートメントに対するレスポンスがすべてNSString* type = [Soap getNodeValue:element withName:@"type"];
nil を返すので、return[Soap deserializeAsDictionary:element];
と続けて必要な結果を取得します。私の場合NSString* type = [Soap getNodeValue:element withName:@"type"];
、ステートメントに到達すると、最初のオブジェクトに対して「NIVEAU」が返され、他のオブジェクトに対して「ZONE」が返されます。これにより、アプリケーションの実行と実行が許可されず、[Soap deserializeAsDictionary:element];
解析結果として NSDictionary ではなく文字列オブジェクトが取得されます。
この問題を解決するのを手伝ってくれませんか?