我有一个从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>1</int>"
,@"<int>2</int>"
等CXMLDocument
我确信这在下载的随附文档中有所解释 - 目前我还不清楚。
答案 0 :(得分:1)
一个实例是:filter是一个类,我有一个类的过滤器,但没有办法初始化它,(除了alloc-init然后设置它的属性,但它的属性是另一个这样的自定义类型.. !!!!)...如果你知道任何“技巧”告诉/配置sudzc允许我们传递对象或获取可可类型的对象,请告诉我....
答案 1 :(得分: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请求??
答案 2 :(得分:0)
这有点老了,但我希望它会帮助别人。我以这种方式在SoapArray上实现了serialize:
方法:
- (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的标记,该标记将包含用内容类名称标记的对象。