Редактирование значения объекта и его дублирование - PullRequest
0 голосов
/ 20 июля 2011

У меня есть объект событий, который указан ниже

NSString *name;
NSString *date;
NSInteger id;

Я храню объект событий в NSMutabelArray. Я хочу добавить к дате и сохранить в другом массиве. Для этого я использую код ниже

NSString *curDate = event.Date;
NSDate *date = [dateFormat dateFromString:curDate];
for(int i=0;i<5;i++)
{
  Events *newEvent = event;
  NSDate *newDate = [date dateByAddingTimeInterval:60*60*24*1];
  newEvent.date = [dateFormat stringFromDate:newDate];
  [deleg.events addObject:newEvent];
  date = newDate;
}

Таким образом, после последней итерации цикла все объекты в Deleg.events имеют последнюю вычисленную дату. Как я могу решить это. Спасибо

1 Ответ

1 голос
/ 20 июля 2011

Вы не делаете новое событие.Ваша строка

Events *newEvent = event;

просто создает новую переменную, которая ссылается на точно такой же объект события, что означает, что вы теперь добавили точно такой же объект в массив 5 раз.

Я не знаюне знаю, как работает ваш Events класс.Если он соответствует NSCopying, вы можете использовать

Events *newEvent = [[event copy] autorelease];

. Если нет, вам придется создать новый объект Events (используя [[Events alloc] init] или любой другой, подходящий для класса) и заполнить его.это с соответствующими данными.

...