尝试将NSArray的内容放入NSMutableArray时出现问题

时间:2011-05-04 13:36:18

标签: ios nsmutablearray nsarray

请我尝试将两个NSArray的内容放在两个NSMutableArray中,但它似乎不起作用:

NSMutableArray *newArrayTypeCarburant = [[NSMutableArray alloc]init];
    NSMutableArray *newArrayNomStation = [[NSMutableArray alloc]init];
    for(int i=0; i <[topStation.listeTypesDesCarburants count]; i++)
    {
        [newArrayTypeCarburant addObjectsFromArray: [topStation.listeTypesDesCarburants objectAtIndex:i]]; 
    }
    for(int i=0; i <[topStation.listeDesEnseignes count]; i++)
    {
        [newArrayNomStation addObjectsFromArray: [topStation.listeDesEnseignes objectAtIndex:i]]; 
    }

topStation.listeDesEnseignestopStation.listeTypesDesCarburants是在appdelegate类中声明的两个NSArray和全局变量。请提前帮忙))

修改 我试着说:

NSMutableArray *newArrayTypeCarburant = [[NSMutableArray alloc]init];
    NSMutableArray *newArrayNomStation = [[NSMutableArray alloc]init];



    for(int i=0; i <[topStation.listeTypesDesCarburants count]; i++)
    {
        [newArrayTypeCarburant addObject: [topStation.listeTypesDesCarburants objectAtIndex:i]]; 
    }
    for(int i=0; i <[topStation.listeDesEnseignes count]; i++)
    {
        [newArrayNomStation addObject: [topStation.listeDesEnseignes objectAtIndex:i]]; 
    }
    self.pickerArrayTypeCarburant = newArrayTypeCarburant;
    self.pickerArrayNomStation = newArrayNomStation;

第一个选择器包含数组中的值,但是当我尝试单击第二个选择器时,抛出异常:

2011-05-04 15:10:06.631[1065:207] -[__NSCFDictionary isEqualToString:]: unrecognized selector sent to instance 0x6e389a0
2011-05-04 15:10:06.633[1065:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary isEqualToString:]: unrecognized selector sent to instance 0x6e389a0'

2 个答案:

答案 0 :(得分:2)

您正在使用NSArray addObjectsFromArray:它将复制整个数组,但您为每个容器成员执行一次(以及不传递正确的类型,因为它需要NSArray引用并且您传递了单个元素)。而是尝试像这样复制数组并删除for循环:

[newArrayTypeCarburant addObjectsFromArray: topStation.listeTypesDesCarburants];
[newArrayNomStation addObjectsFromArray: topStation.listeDesEnseignes];

如果您仍然需要逐个浏览它们,请使用您拥有的代码,但将addObjectsFromArray:更改为addObject:

for(int i=0; i <[topStation.listeTypesDesCarburants count]; i++)
{
    // perhaps some predicate here...
    [newArrayTypeCarburant addObject: [topStation.listeTypesDesCarburants objectAtIndex:i]]; 
}

答案 1 :(得分:1)

你可以使用arrayWithArray。

NSMutableArray *newArrayNomStation = [NSMutableArray arrayWithArray:topStation.listeDesEnseignes];