NSJSONSerialization
我有一个从类创建字典的方法。然后我枚举 json,并创建对象来存储每个实例的状态。
- (void)fetchedData:(NSData *)responseData {
NSError* error;
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:&error];
NSArray *moviesJson = [json objectForKey:@"movies"];
for(NSDictionary *element in moviesJson)
{
RABMovie *myMovie = [[RABMovie alloc] initWithJson:element];
// RABMovie *myMovie = [RABMovie new];
// myMovie.json = element;
[_myMovieNames addObject: myMovie];
myMovie = nil;
}
[self.movieTableView reloadData];
}
问题:我想通过传入element
分配器来创建我的对象,但是当我这样做时,我的UITTableView
行都包含相同的电影数据。它始终是最后一项,让我相信我只使用一个内存地址,并且最后一次更新会影响整个集合。
如果我取消注释代码以将其json
用作属性而不是分配参数,则我不再遇到问题并且一切正常。我也尝试NSDictionary
通过深层副本创建一个全新的element
但无济于事。
有人知道为什么会这样吗?顺便说一句,我正在使用 ARC。-谢谢你的时间。
编辑:添加了更多代码。我已经包含了一个属性movieName
来说明我如何使用 ivar _json
。
@implementation RABMovie
NSDictionary *_json;
- (id) initWithJson: (NSDictionary*) jsonAsDictionary
{
if (self = [super init])
{
_json = jsonAsDictionary;
}
return self;
}
- (NSString*) movieName
{
return [_json objectForKey:@"title"];
}