我有这个模特:
@interface Data : NSObject
@property (nonatomic, assign) int Period;
@property (nonatomic, assign) NSDate *Start;
@property (nonatomic, assign) NSDate *End;
@end
@implementation Data
@synthesize Period, Start, End;
@end
我在可变数组中添加数据。
@property (strong, nonatomic) NSMutableArray* myArray;
self.myArray = [NSMutableArray arrayWithCapacity:0];
Data *element =[ [Data alloc] init];
element.Period = 1;
element.Start = dateStart1;
element.End = dateEnd1;
[self.myArray addObject:element];
element.Period = 2;
element.Start = dateStart2;
element.End = dateEnd2;
[self.myArray addObject:element];
element.Period = 3;
element.Start = dateStart3;
element.End = dateEnd3;
[self.myArray addObject:element];
为什么从数组i中提取Period只接收最后一个元素x 3 ???
Data * NumElement = [self.myArray valueForKey:@"Period"];
NSLog(@"All period: %@", NumElement);
我收到3 3 3而不是1 2 3?
答案 0 :(得分:2)
那是因为你将同一个对象一遍又一遍地放入你的数组中。无论你添加多少次,无论你改变哪个属性,它都是同一个对象。
您需要为每组数据实例化一个对象。
答案 1 :(得分:2)
实例化单个对象,将其添加到数组,然后更改同一个对象并将其再次添加到数组等。数组最终保存对同一对象的3个引用,最后为其分配值。
试试这个:
Data *element1 =[ [Data alloc] init];
element1.Period = 1;
element1.Start = dateStart1;
element1.End = dateEnd1;
[self.myArray addObject:element1];
Data *element2 =[ [Data alloc] init];
element2.Period = 2;
element2.Start = dateStart2;
element2.End = dateEnd2;
[self.myArray addObject:element2];
Data *element3 =[ [Data alloc] init];
element3.Period = 3;
element3.Start = dateStart3;
element3.End = dateEnd3;
[self.myArray addObject:element3];