0

I've this model:

@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

I add data in mutable array.

@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];

Why when extract Period from array i receive only the last element x 3 ???

Data * NumElement = [self.myArray valueForKey:@"Period"];
NSLog(@"All period: %@", NumElement);

and i receive 3 3 3 instead of 1 2 3 ?

4

2 回答 2

2

That's because you're putting the same object into your array over and over again. No matter how many times you add it, no matter which of its properties you change, it's the same object.

You need to instantiate an object for each set of data.

于 2012-12-06T22:26:53.560 回答
2

You instantiate a single object, add it to the array, then change that same object and add it again to the array, etc. The array ends up holding 3 references to the same object, with the values last assigned to it.

Try this:

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];
于 2012-12-06T22:27:53.583 回答