Возможно, вам следует начать с проверки содержимого narr во время выполнения. Похоже, что содержимое не то, что вы ожидаете, что они будут в желаемой точке выполнения. Прямо перед строкой, которую вы разместили в своем вопросе, используйте вызов NSLog для записи содержимого массива следующим образом:
NSLog(@"Contents of array: %@", narr);
Затем запустите приложение и проверьте консоль после возникновения ошибки. Потратьте некоторое время на изучение того, как использовать NSLog, точки останова и консоль GDB - они в конечном итоге избавят вас от многих разочарований при отладке.
Ваши комментарии к ответу unset поднимают еще один вопрос: почему вы храните несколько фрагментов данных в одной строке? Не проще ли разделить name
, lname
и id
на отдельные строки и поместить каждую в свою ячейку массива? Затем вы можете получить к ним доступ, используя [narr objectAtIndex:]
, не беспокоясь о разборе строки каждый раз, когда вам понадобится одна из этих частей информации.