Значение NSString объекта NSArray - PullRequest
2 голосов
/ 17 января 2010

Я пытаюсь выяснить, почему этот код не работает. Я пытаюсь найти, если строка содержит "| P". Если это так, я хочу что-то сделать.

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
}

Это приводит к падению моего приложения.

Ответы [ 2 ]

4 голосов
/ 17 января 2010

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

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

2 голосов
/ 17 января 2010

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) {
    ....
  }
...