4

我有一个从 WSDL 生成的 sudzc 服务类,它接受 ArrayOfInt 和 ArrayOfString 对象作为参数。服务方法签名是这样的:

- (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)..我不知道如何处理这种类型...

一个实例是:filter是一个类,我有一个filter的类,但是没有办法初始化它,(除了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 回答