Как разрешить эту ошибку "Элемент массива не может быть 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.