2010-01-17 8 views
2

J'essaie de comprendre pourquoi ce code ne fonctionne pas. J'essaie de chercher si une chaîne contient "| P". Si c'est le cas, je veux faire quelque chose.Valeur NSString de l'objet NSArray

NSMutableArray *list = [pView getPOIList]; 
NSString *cellValue = [list objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 
NSArray *chunks = [cellValue componentsSeparatedByString: @"|P"]; 
//NSLog([[chunks count] stringValue]); 
if([&chunks[1] isEqualToString:@"|P"]) { 
     //Do Something 
} 

Cela fait planter mon application.

Répondre

4

NSArray *chunks est un tableau NSArray, pas un tableau C. Vous pouvez utiliser [chunks objectAtIndex:1] pour trouver l'objet au lieu de &chunks[1]. Pour savoir si une incitation contient une autre chaîne, vous pouvez utiliser ([cellValue rangeOfString:@"IP"].length == 0). Si la longueur de la plage est 0, la chaîne n'existe pas dans la chaîne d'origine. Reference

+0

Merci. objectAtIndex était le problème. J'ai également besoin de diviser la chaîne par juste |, pas | P. – Adam

+1

Si vous utilisez rangeOfString, il est préférable de rechercher .location = NS_NOT_FOUND (au moins, je pense que c'est beaucoup plus clair que ce que vous faites) –

2

1. Vous ne indexent NSArray s par x[1]. Vous le faites par le trop verbeux [x objectAtIndex:1].

2.componentsSeparatedByString: séparera la chaîne par |P, donc si la chaîne est:

.

FOO|PURPLE|BAR|PIE|42|P|P2 

La chaîne séparée deviendra

("FOO", "URPLE|BAR", "IE|42", "", "2") 

vous ne sera pas trouver un élément dans le tableau résultant contenant la chaîne |P. Si vous souhaitez déterminer si une sous-chaîne existe, utilisez rangeOfString:.

NSRange substrRng = [cellValue rangeOfString:@"|P"]; 
    if (substrRng.location != NSNotFound) { 
    .... 
    } 
Questions connexes