addObject替换NSMutableArray中的上一个对象

时间:2012-08-04 12:33:11

标签: objective-c ios nsmutablearray

我试图通过for循环将对象添加到NSMutableArray。但似乎每当我添加一个对象时它会替换旧的对象,以便我当时只在数组中有一个对象......

你知道可能出现什么问题吗?

- (void)viewDidLoad
{
[super viewDidLoad];
LoginInfo *info = [[LoginInfo alloc] init];
info.startPost = @"0";
info.numberOfPosts = @"10";
info.postType = @"1";
getResults = [backendService getAllPosts:info];

for (NSInteger i = 0; i < [getResults count]; i++) {

    Post *postInfo = [[Post alloc] init];
    postInfo = [getResults objectAtIndex:i];

    dataArray = [[NSMutableArray alloc] init];
    [dataArray addObject:postInfo.noteText];
    NSLog(@"RESULT TEST %@", dataArray);

}
}

RESULT TEST日志始终只显示输出中最后添加的字符串。

2 个答案:

答案 0 :(得分:10)

你正在for循环中初始化dataArray,所以每次再创建它(这意味着没有对象)并添加一个新对象

移动

dataArray = [[NSMutableArray alloc] init];

到for循环之前

当您使用getResults数组中的对象立即覆盖它时,也无需分配/初始化postInfo对象

答案 1 :(得分:4)

您可以使用以下行继续为每次循环运行重新初始化数组:

dataArray = [[NSMutableArray alloc] init];

因此,dataArray被设置为每次循环运行的新(空)数组。

在循环之前初始化数组。尝试这样的事情:

dataArray = [[NSMutableArray alloc] init];

for (NSInteger i = 0; i < [getResults count]; i++) {

    PostInfo *postInfo = [getResults objectAtIndex:i];

    [dataArray addObject:postInfo.noteText];

    NSLog(@"RESULT TEST %@", dataArray);

}