Я удивлен, что код даже компилируется. Если я правильно помню, он не сможет скомпилироваться, пока вы не приложите большие усилия, чтобы отключить целый набор предупреждений компилятора.
NSString newseparator = @";";
Это должно дать ошибку, напишите, что у вас нет *.
NSString *key = [subarray objectAtIndex[0]];
NSString *object = [subarray objectAtIndex[1]];
Ни одна из этих строк кода не имеет никакого смысла.
Может показаться, что вы не опубликовали действительный код?
<Ч />
Теперь вернемся к исключению. Исключение диапазона будет брошено, если вы попытаетесь получить доступ к элементу по индексу, который находится за пределами диапазона индексов, доступных в массиве. Таким образом, если componentsSeparatedByString:
вернул массив из 0 или 1 элемента, то [subarray objectAtIndex: 1];
вызовет исключение диапазона.
То, что вы не хотите сделать, - это попытаться обработать исключение, используя блок @catch
. В Какао (и разработке для iPhone) исключения рассматриваются как неисправимые ошибки.
Итак, вместо этого используйте метод -count
в NSArray, чтобы убедиться, что массив действительно содержит # ожидаемых элементов. Поскольку вы пишете случайный синтаксический анализатор, это, вероятно, хорошая идея в качестве минимальной проверки правильности ввода.