的NSMutableString + web服务
问题描述:
我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也会改变。为什么?
答
嗯,我只看到名称和地址总是@“”和相同。
例如
...
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次)
答
我解决我的问题:
//总是释放的NSMutableString
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(soapResults) {
[soapResults release];
soapResults = nil;
}
soapResults = [[NSMutableString alloc] init];
NSLog(@"stringFound:%@", string);
[soapResults appendString:string];
}
这里有一个问题!?对不起,但..没有看到它..请编辑您的问题 –
是的,有一个问题。编辑 – Ladessa
您无需更改标题以显示您的问题已解决,只需接受答案即可。 – Abizern