我试图通过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日志始终只显示输出中最后添加的字符串。
答案 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);
}