0

私の変数の1つに問題があります。問題を見つけることができません。問題は、ユーザーがログインしたとき、そのユーザーがログアウトしたときにその罰金です。ユーザーが再ログインするときです。ユーザーIDは同じままです。NSXmlparser /変数の問題が発生します。 - 変数がリセットされない

-(IBAction)postData:(id)sender 
{  
    cmdLoginButton.hidden = YES; 
    cmdLoginButton.enabled = NO; 

    if(textName.text.length && textNumber.text.length > 0) 
    { 
     //[self performSelectorInBackground:@selector(sendData) withObject:nil]; 
     NSMutableData *data = [NSMutableData data]; 

     NSString *name = textName.text; 
     NSString *number = textNumber.text; 

     NSString *nameString = [[NSString alloc] initWithFormat:@"name=%@", name]; 
     NSString *numberString = [[NSString alloc] initWithFormat:@"&number=%@", number]; 
     NSString *genderString = [[NSString alloc] initWithFormat:@"&gender=%@", gender]; 

     //NSLog(nameString); 
     //NSLog(numberString); 

     [data appendData:[nameString dataUsingEncoding:NSUTF8StringEncoding]]; 
     [data appendData:[numberString dataUsingEncoding:NSUTF8StringEncoding]]; 
     [data appendData:[genderString dataUsingEncoding:NSUTF8StringEncoding]]; 

     NSURL *url = [NSURL URLWithString:@"http://www.directory.net/test.php"]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

     [request setHTTPMethod:@"POST"]; 
     [request setHTTPBody:data]; 

     NSURLResponse *response; 
     NSError *err; 
     NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 
     NSLog(@"responseData: %@", responseData); 

     userData = responseData; 

     cmdLogoutButton.hidden = NO; 
     cmdLogoutButton.enabled = YES; 

     [self startParsingUserId]; 

    } 
    else 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Text Fields Empty" message:@"One Or More Textfields Are Empty" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 

     cmdLoginButton.enabled = YES; 
     cmdLoginButton.hidden = NO; 
     cmdLogoutButton.enabled = NO; 

    } 


} 

//*****************************START OF PARSER************************* 

-(void)startParsingUserId; 
{ 
    NSXMLParser *idParser = [[NSXMLParser alloc] initWithData:userData]; 
    idParser.delegate = self; 
    [idParser parse]; 
    [idParser release]; 
} 

-(void)parserDidStartDocument:(NSXMLParser *)parser 
{ 
    currentElementName = nil; 
    currentText = nil; 
} 

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if([elementName isEqualToString:@"usercallback"]) 
    { 
     [currentIDDict release]; 
     currentIDDict = [[NSMutableDictionary alloc] initWithCapacity:[interestingTags count]]; 
    } 
    else if([interestingTags containsObject:elementName]) 
    { 
     currentElementName = elementName; 
     currentText = [[NSMutableString alloc] init]; 
    } 
} 

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    [currentText appendString:string]; 
} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if([elementName isEqualToString:currentElementName]) 
    { 
     [currentIDDict setValue: currentText forKey: currentElementName]; 
    } 
    else if([elementName isEqualToString:@"usercallback"]) 
    { 
     [self.userArray addObject:currentIDDict]; 

    } 

    NSLog(@"ending"); 
    [currentText release]; 
    currentText = nil; 
} 

-(void)parserDidEndDocument:(NSXMLParser *)parser 
{ 
    NSLog(@"end"); 
    NSDictionary *rowData = [self.userArray objectAtIndex:0]; 
    NSString *userID = [[NSString alloc] initWithFormat:@"%@", [rowData objectForKey:@"id"]]; 
    self.userId = userID; 

    NSLog(@"DONE PARSING DOCUMENT"); 
    NSLog(@"userid = %@", userId); 
} 

/*- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
{ 
    NSLog(@"Error on XML Parse: %@", [parseError localizedDescription]); 
}*/ 

//*****************************END OF PARSER************************* 

-(IBAction)logout:(id)sender 
{ 
    NSString *userID = self.userId; 

    NSMutableData *data = [NSMutableData data]; 

    NSMutableString *userString = [[NSMutableString alloc] initWithFormat:@"id=%@", userID]; 

    //NSLog(userString); 
    //NSLog(numberString); 

    [data appendData:[userString dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSURL *url = [NSURL URLWithString:@"http://www.directory.net/offline.php"]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody:data]; 

    NSURLResponse *response; 
    NSError *err; 

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 
    NSLog(@"responseData: %@", responseData); 

    cmdLoginButton.hidden = NO; 
    cmdLogoutButton.hidden = YES; 

    cmdLoginButton.enabled = YES; 
    cmdLogoutButton.enabled = NO; 

} 

答えて

1

これが起こりそうな理由は、次の行に関連しています。

NSDictionary *rowData = [self.userArray objectAtIndex:0]; 

logoutメソッドに[self.userArray removeAllObjects];の呼び出しを追加すると、私はこの方法をログインに追加することなく、必要な推薦することを確認してください。

関連する問題