4

ArrayOfInt および ArrayOfString オブジェクトをパラメーターとして受け入れる WSDL から生成された sudzc サービス クラスがあります。サービス メソッドのシグネチャは次のとおりです。

- (SoapRequest*) Search: (id <SoapDelegate>) handler filters: (NSMutableArray*) displayedAttributes: (NSMutableArray*) displayedAttributes;

私の質問は、NSMutableArrays を期待するパラメーターに値を渡すにはどうすればよいですか?

上記のメソッド シグネチャでは、「displayedAttributes」パラメータはArrayOfIntオブジェクトを想定しています (int タグなどに複数の整数を入力する必要があります<int>1</int><int>2</int><int>3</int>)。

ただし、私が試したこれらのことはどれもうまくいきませんでした:

  • (int) オブジェクトの NSArray/NSMutableArray を直接渡す
  • NSNumber オブジェクトの NSArray/NSMutableArray を直接渡す
  • @"1"、@"2"、@"3" などを含む文字列の配列を渡す
  • @"<int>1</int>"@"<int>2</int>"などをすでに含む文字列の配列を渡す
  • CXMLDocument整数に基づく文字列からの構築

これについては、ダウンロードに付随するドキュメントで何らかの形で説明されていると思いますが、現時点では明確ではありません。

4

3 に答える 3

1

@Jon Limjap: ラッキーだよ!!! それはあなたが以前に扱ったタイプを尋ねます.SudzCが私のために生成したカスタムクラスタイプを持っています(!)... CXMLNodeが渡された場合にのみ初期化されます(CXMLDocument / CXMLElementが必要です)..方法がわかりません.そのようなタイプを扱います...

インスタンスは次のとおりです。フィルターはクラスです。フィルターのクラスがありますが、それを初期化する方法はありません (alloc-init とそのプロパティの設定を除いて、そのプロパティは別のカスタム タイプです.. !!! !)...オブジェクトの受け渡しやココア型のオブジェクトのフェッチを許可するように sudzc に指示/構成する「トリック」を知っている場合は、教えてください....

于 2012-05-03T15:12:28.567 に答える
0

これは少し古いですが、誰かの助けになることを願っています。serialize:この方法で SoapArray にメソッドを実装しました。

- (NSMutableString *)serialize:(NSString *)name
{
    NSMutableString *str = [NSMutableString string];
    //[str appendFormat:@"<%@>", name];
    for (id content in self)
    {
        //[str appendString:[Soap serialize:content]];
        [str appendString:[Soap serialize:content withName:name]];
    }
    //[str appendFormat:@"</%@>", name];
    return str;
}

ご覧のとおり、コメント行がいくつかあります。それらのコメントを外し、for 内で現在使用されているものをコメントにすると、コンテンツ クラス名でタグ付けされたオブジェクトを含む name という名前のタグが得られます。

于 2012-03-08T08:28:28.060 に答える
0

オブジェクトの配列をSOAPリクエストに渡すという同様の状況がありました。次の変更を行うことで、なんとか機能させることができました。

SOAP 配列の場合は追加されません

+(NSString *) serialize: (id) object()
{
//look if it is array not implemented
}

だから私は次の方法で変更することができました

+ (NSString*) serialize: (id) object withName: (NSString*) nodeName {
    if([object respondsToSelector:@selector(serialize:)]) {
        if([object isKindOfClass:[SoapArray class]]) 
            return [object serialize:object];
        return [object serialize: nodeName];
    }
    NSString *temp =[NSString stringWithFormat:@"<%@>%@</%@>", nodeName, [Soap serialize: object], nodeName];
    NSLog(@"serialise = %@", temp);
    return temp;
}

SOAPリクエストの時点で、

NSMutableArray arr = [[MYTable_STUB_ARR alloc] init]

MYTABLE_OBJ *obj = [[MYTABLE_OBJ alloc] init];

[arr addObject:obj];

[obj release];

エレメント arr オブジェクトを SOAP リクエストに渡します ??

于 2011-03-10T11:54:20.680 に答える