Как разрешить эту ошибку "Элемент массива не может быть nil"?

Ниже кода генерируется ошибка

Элемент массива не может быть nil

когда я присваиваю значение в aryResult[0]

NSMutableArray *tempResult = [[NSMutableArray alloc] initWithCapacity:2];
switch (habitObj.NoOfTimesPer)
{
 case 1://NO_OF_TIMES_PER_DAY
 {
 tempResult = [self getTotalNoOfDaysOrWeeks_createdDate:habitObj.strCreatedDt totalsOf:@"TOTAL_DAYS"];
 }
 break;
 case 2://NO_OF_TIMES_PER_WEEK
 {
 tempResult = [self getTotalNoOfDaysOrWeeks_createdDate:habitObj.strCreatedDt totalsOf:@"TOTAL_WEEKS"];
 }
 break;
 default:
 break;
}
aryResult[0] = tempResult[0];
aryResult[3] = tempResult[1];

В приведенном ниже коде не возникает ошибка:

[tempResult addObject:[NSNumber numberWithInt:0]];
[tempResult addObject:[NSNumber numberWithInt:1]];
aryResult[0] = tempResult[0];
aryResult[3] = tempResult[1];
1 ответ

Ваш метод

[self getTotalNoOfDaysOrWeeks_createdDate:habitObj.strCreatedDt totalsOf:@"TOTAL_DAYS"];

возвращает nil, поэтому tempResult становится nil после назначения внутри оператора switch.

Вызов tempResult[0] является сокращением для [tempResult objectAtIndex:0]. И он возвращает nil, потому что в Objective-C метод, вызываемый на nil объекте, всегда возвращает nil. Затем вы пытаетесь добавить nil объект в NSMutableArray, что не разрешено, поэтому приложение аварийно завершает работу.

licensed under cc by-sa 3.0 with attribution.