удалить запись массива с пустыми значениями - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть массив с большим количеством пустых значений, и я хочу удалить их из массива ....

    NSMutableArray *entry = [self.selectedRow allValues];

for (int i = 0 ; i < [entry count] ; i++) {

    NSLog(@"count: %@", [entry objectAtIndex: i]);
    NSLog(@"point: %@", [selectedRow valueForKey:[entry objectAtIndex:i]]);
    if([[selectedRow valueForKey:[entry objectAtIndex: i]] length] < 2){
        [selectedRow removeObjectAtIndex: i];
    }
}

< 2 потому что есть некоторые значения, которые на самом деле не пусты.....

по какой-то причине [entry valueForKey:[entry objectAtIndex:i]]] пусто

, и я получаю исключение -[__NSCFDictionary removeObjectAtIndex:]: unrecognized selector sent to instance 0x7021510, но словарь не задействован, только массивы.

икогда я веду обратный отсчет for (int i = [entry count -1; i = 0; i--]){ цикл даже не вызывается?!?

Я надеюсь, что кто-то может помочь мне с этим ....

РЕДАКТИРОВАТЬ:

Это не то, чего изначально хотелось, а кое-как, как он работает лучше таким образом ... Я проверяю длину для valueForKey при разборе файла, чтобы уменьшить размер файла более чем на половину, и он работает довольно хорошо.....

Ответы [ 2 ]

0 голосов
/ 24 февраля 2011

Должно быть,

for (int i = [entry count] -1; i > 0; i--]){ }

И попробуйте,

for (int i = 0 ; i < [selectedRow count]; i++) {
    if([[selectedRow objectAtIndex: i] count] < 2){
        [selectedRow removeObjectAtIndex: i];
    }
}
0 голосов
/ 24 февраля 2011

Попробуйте:

NSMutableArray *entry = [NSMutableArray arrayWithArray:[self.selectedRow allValues]];

, потому что [self.selectedRow allValues] скорее всего возвращает NSArray, вы не можете просто притвориться, что оно изменчиво.

OH.и кроме того self.selectedRow выглядит как NSDictionary.Попробуйте removeObjectForKey: вместо.

...