2

我正在尝试通过 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);

}
}

结果测试日志始终只显示输出中最后添加的字符串。

4

2 回答 2

10

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

移动

dataArray = [[NSMutableArray alloc] init];

在 for 循环之前

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

于 2012-08-04T12:37:32.873 回答
4

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

dataArray = [[NSMutableArray alloc] init];

SodataArray为每次循环运行设置一个新的(空)数组。

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

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);

}
于 2012-08-04T12:43:57.433 回答