簡體   English   中英

NSMutableString + webService

[英]NSMutableString + webService

我正在嘗試使用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和名稱等於地址

當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];

其他問題:
不要在foundCharacters中使用[soapResults setString:newString],而是使用appendString(n次調用foundCharacters)

我解決了我的問題:

//始終釋放NSMutableString

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

    soapResults = [[NSMutableString alloc] init];

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM