2009-11-09 3 views
0

Je fais un appel à un service Web, les résultats du service Web sont sous la forme d'une chaîne, séparés par des délimiteurs. La chaîne de résultats est 1|101|Y|103|Y|105|Y|107|Y|109|Y|112|N|114|N|116|Y|NSArray ne met pas à jour ses données la deuxième fois j'essaie d'y accéder

Maintenant, je tokenize la chaîne de résultat, le premier jeton est 1, et sur la base de cette valeur, j'affiche le menu suivant.

Si je fais un journal non valide dans le résultat est Error

et maintenant deuxième fois si j'entre le nom d'utilisateur et mot de passe, le premier jeton a une valeur de Error1.

Comment puis-je me débarrasser des résultats obtenus en cas de connexion invalide? Mon fichier loginController.m est

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
if([elementName isEqualToString:@"return"]) 
{ 

    recordResults = FALSE; 
    **NSArray *chunks=[soapResults componentsSeparatedByString:@"|"];** 

    NSLog(soapResult); 
    NSLog([chunks objectAtIndex:0]);//Second time on correct login, it displays in console as Error1 

    if([[chunks objectAtIndex:0] isEqualToString:@"1"]) 
    { 

     Menu *mv2 = [[Menu alloc] initWithNibName:@"Menu" bundle:nil]; 
     testAppDelegate *appdel=(testAppDelegate *)[[UIApplication sharedApplication]delegate]; 
     appdel.soapResult=self.soapResult; 
     self.mv1=mv2; 
     NSLog(appdel.soapResult); 
     [self presentModalViewController:mv1 animated:YES]; 
     [mv1 release]; 

    }else { 
     //[[chunks objectAtIndex:0] setText:@""]; 


     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Sorry Invalid Login" 
                delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 

     [alert show]; 
     [alert release]; 


     [email protected]""; 
     [email protected]""; 
      } 


} 

}

- (void)dealloc 
{ 
[username_TextField release]; 
[password_TextField release]; 
[chunks release]; 
[super dealloc]; 

}

+0

Je suggérerais que vous éditiez cette question jusqu'au code correspondant au NSArray avec lequel vous rencontrez des problèmes. De plus, vous devriez prendre le temps de formater votre question afin que les autres puissent la lire facilement. Couper et coller ne fonctionne pas. Veuillez respecter ceux qui vous répondent et prenez le temps de le nettoyer avant de poster. –

+0

Désolé je suis nouveau à stackoverflow, et je me demandais comment suis-je pour formater ce message, Maintenant j'ai fait les changements, vous pouvez le vérifier – shreedevi

Répondre

0

C'est assez difficile pour moi de suivre, mais, permettez-moi d'obtenir ce droit: - La première fois que vous - startElement vous créez un NSMutableString 'soapResults'. Chaque fois que vous -foundCharacters vous les ajoutez à soapResults. Chaque fois que vous -endElement vous analysez les 'soapResults' qui ne cessent de croître?

Voulez-vous vraiment créer seulement un 'soapResults' et continuer à l'ajouter?

+0

réellement chaque fois que je loogin j'envoie le nom d'utilisateur et mot de passe au service web, il authentifie mes informations d'identification et renvoie une valeur de chaîne 1 | 101 | Y | 103 | Y | 105 | Y | 107 | Y | 109 | Y | 112 | N | 114 | N | 116 | Y | en cas de connexion réussie. Mais en cas de connexion invalide, il me donne Erreur comme une chaîne de retour.Maintenant, pour la première fois j'entre les credentilas invalides, donc mon premier jeton ou valeur à [morceaux objectAtIndex: 0] est Error.Now deuxième fois quand je saisis le bon valeurs, le résultat devrait être 1 | 101 | .. et le premier jeton à [morceaux objectAtIndex: 0] devrait être 1, Cependant, il me donne Error1 – shreedevi

+0

alors attendez. Vous dites que [[@ "ERROR" componentsSeparatedByString: @ "|"] objectAtIndex: 0] == @ "Error1"? –

+0

** NSArray * chunks = [soapResults componentsSeparatedByString: @ "|"]; ** NSLog (soapResult); // Sortie: 1 | 101 | Y | 103 | Y | 105 | Y | 107 | Y | 109 | Y | 112 | N | 114 | N | 116 | Y | Mais NSLog ([chunks objectAtIndex: 0]); Sortie: Error1 – shreedevi

Questions connexes