编辑对象的值并复制它

时间:2011-07-20 00:05:42

标签: objective-c ios ios4 nsobject

我有一个事件对象,如下所示

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 个答案:

答案 0 :(得分:1)

你没有参加新活动。你的行

Events *newEvent = event;

只是创建一个引用完全相同的事件对象的新变量,这意味着您现在已经将完全相同的对象添加到数组中5次。

我不知道您的Events班级是如何运作的。如果它符合NSCopying,那么你可以使用

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

如果没有,您将必须创建一个全新的Events对象(使用[[Events alloc] init]或适合该类的任何对象),并使用适当的数据填充它。