проблема при попытке поместить содержимое NSArray в NSMutableArray - PullRequest
0 голосов
/ 04 мая 2011

, пожалуйста, я пытаюсь поместить содержимое двух 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.listeDesEnseignes и topStation.listeTypesDesCarburants - две NSArray и глобальные переменные, объявленные в классе appdelegate. Помогите пожалуйста, спасибо заранее))

EDIT я попробую это:

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 ]

2 голосов
/ 04 мая 2011

Вы используете 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 голос
/ 04 мая 2011

вы можете просто использовать arrayWithArray.

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