2012-12-01 21 views
-1

我tryng来使用Web服务,但是当元素名称更改,更改所有其他...的NSMutableString + web服务

-(void)callWebService { 
    _estacionamentoAdd = [[Estacionamento alloc]init]; 
    NSString *url = @"http://urlfromws"; 
    NSMutableURLRequest *request =[[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:url]]; 
    [request setHTTPMethod:@"GET"]; 

    NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self]; 
    if (conn) { 
     webData = [[NSMutableData data] retain]; 
    } 
    else 
    { 

    } 
} 

//当得到响应值

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    if(!soapResults) 
    { 
     soapResults = [[NSMutableString alloc] init]; 
    } 
    NSLog(@"stringFound:%@", string); 
    [soapResults setString:string]; 
} 

//当收到响应

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if(!soapResults) 
    { 
     soapResults = [[NSMutableString alloc] init]; 
    } 


if([elementName isEqualToString:@"id"]) 
{ 
id = [soapResults intValue]; 
} 
else if([elementName isEqualToString:@"name"]) 
{ 
    name = soapResults; 
} 
else if([elementName isEqualToString:@"adress"]) 
{ 
    adress = soapResults; 

} 
[soapResults setString:@""]; 

    } 

当元素名称为“名称或住址”的ID和名称都等于ADRESS

当elementName是id ... id = soapResults。好的,但是当elementName是Adress时,adress = soapResults和id也会改变。为什么?

+0

这里有一个问题!?对不起,但..没有看到它..请编辑您的问题 –

+0

是的,有一个问题。编辑 – Ladessa

+1

您无需更改标题以显示您的问题已解决,只需接受答案即可。 – Abizern

回答

2

嗯,我只看到名称和地址总是@“”和相同。

例如

... 
name = soapResults; //NOT copied.. name and soapResults are the same object 
... 
[soapResults setString:@""]; //affects name too, as they are the same 

相同的地址,而不是ID,因为这是一个整数,而不是一个对象

  • 名=地址= soapResults ...

你可能想复制值

name = [soapResults description]; 
... 
address = [soapResults description]; 

另一个问题:
不使用[soapResults了setString:newString]无论是在foundCharacters,使用appendString(foundCharacters被称为n次)

+0

soapResults是一个NSMutableString,其中包含字段 – Ladessa

+0

的值,是的,它一遍又一遍地重复使用,名称/地址正好指向它 –

+0

但doens't工作...更改所有 – Ladessa

0

我解决我的问题:

//总是释放的NSMutableString

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
if(soapResults) { 
    [soapResults release]; 
    soapResults = nil; 
} 

    soapResults = [[NSMutableString alloc] init]; 

NSLog(@"stringFound:%@", string); 
[soapResults appendString:string]; 

}