2010-01-17 4 views
2

Я пытаюсь понять, почему этот код не работает. Я пытаюсь выполнить поиск, если строка содержит «| P». Если это так, я хочу что-то сделать.Значение NSString объекта 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 
} 

Это делает мое приложение аварийным.

ответ

4

NSArray *chunks - это NSArray, а не массив C. Вы можете использовать [chunks objectAtIndex:1], чтобы найти объект, а не &chunks[1].

Чтобы найти, есть ли у sting другая строка, вы можете использовать ([cellValue rangeOfString:@"IP"].length == 0). Если длина диапазона равна 0, то строка не существует в исходной строке. Reference

+0

Спасибо. Проблема с объектомAtIndex. Мне также нужно было разбить строку просто |, а не | P. – Adam

+1

Если вы используете rangeOfString, лучше искать .location = NS_NOT_FOUND (так как я думаю, что намного проще, что вы делаете) –

2

1. Вы не индексируют NSArray s по x[1]. Вы делаете это чрезмерно подробным [x objectAtIndex:1].

2.componentsSeparatedByString: отделит строку, |P, поэтому если строка:

.

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

Отделенный строка будет

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

вы не найти элемент в полученном массиве, содержащем строку |P. Если вы хотите определить, существует ли подстрока, используйте rangeOfString:.

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