0

iOS で 1 つのデータ配列を読み取りたいのですが、この配列の 1 つのレコードしか読み取らず、配列を確認したところ 10 個のアイテムが含まれています。

for(NSString *po in list) {
    infor.poster = [po valueForKey:@"Poster"];
    infor.vName= [po valueForKey:@"VName"];
    infor.name = [po valueForKey:@"Name"];
    infor.HDtrailerPath = [po valueForKey:@"HDTrailerPath"];

    [arrfilm addObject:infor];
}

dispatch_async(dispatch_get_main_queue(), ^{
    int widthlblscroll = 0;
    for (Inforfilm *u in arrfilm) {
        Inforfilm *infoF = [[Inforfilm alloc]init];
        infoF.poster = [u valueForKey:@"poster"];
        infoF.name = [u valueForKey:@"name"];

        NSLog(@"%@",infoF.poster);
        NSLog(@"%@",infoF.name);
    }
});
4

1 に答える 1

3

Inforfilmまったく同じインスタンスを複数回配列に追加していました。プロパティを更新したからといって、それが新しいインスタンスであるとは限りません。これを防ぐには、ループの反復ごとに新しいインスタンスをインスタンス化します。内側の最初の行で行われたように。

for(NSString *po in list) 
{
    //create a new instance of Inforfilm 
    Inforfilm *infor = [[Inforfilm alloc] init];    
    infor.poster = [po valueForKey:@"Poster"];
    infor.vName= [po valueForKey:@"VName"];
    infor.name = [po valueForKey:@"Name"];
    infor.HDtrailerPath = [po valueForKey:@"HDTrailerPath"];

    [arrfilm addObject:infor];
    //make sure you got ARC enabled, otherwise this object will now leak!
}
于 2012-08-20T09:07:53.657 に答える