ios - 即使我添加了多个对象,数组也只包含一项

标签 ios nsarray

我想在 iOS 中读取一个数据数组,但我只读取了这个数组中的一条记录,我检查了这个数组,它包含 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);
    }
});

最佳答案

您多次将 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!
}

关于ios - 即使我添加了多个对象,数组也只包含一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034837/

相关文章:

ios - 如何使用 NSRange 创建 NSArray 的子数组?

ios - fatal error : Index out of range - UITableViewController - How to handle/catch this error Swift

ios - 使用 Safari 或 Facebook 应用程序时无法使用应用程序登录 Facebook

iPhone:在联系人中创建自定义字段

ios - 如何清除ImageView?

ios - 调用快速操作时不触发 NotificationCenter

ios - 以特定模式获取 Objective-C 中 NSString 的所有组合的方法是什么?

ios - 从 NSArray 创建结构化 NSDictionary

ios - 过滤后的 NSArray 在 ?在 NSString 中

objective-c - NSDictionary 和 NSArray