2

for ループを介して NSMutableArray にオブジェクトを追加しようとしています。しかし、オブジェクトを追加するたびに、古いオブジェクトが置き換えられるため、その時点で配列にオブジェクトが1つしかないようです...

何が間違っているのか、何か考えはありますか?

- (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 ログです。

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 に答える