删除具有空值的数组条目

时间:2011-02-24 14:42:05

标签: iphone objective-c nsmutablearray nsarray

我有一个包含很多空值的数组,我想从数组中删除它们。

    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]]]为空

并且我得到了exe -[__NSCFDictionary removeObjectAtIndex:]: unrecognized selector sent to instance 0x7021510,但是没有涉及字典,只有数组。

当我倒数for (int i = [entry count -1; i = 0; i--]){时,循环甚至没有被调用?!?

我希望有人可以帮助我......

修改

不是最初想要的,而是一些如何更好地工作...... 当我解析文件时,我检查valueForKey的长度,所以我减少文件大小超过一半,它工作得很好.....

2 个答案:

答案 0 :(得分:0)

试试这个:

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

因为[self.selectedRow allValues]可能会返回NSArray,所以你不能只假装它是可变的。

OH。此外self.selectedRow看起来像NSDictionary。请改为removeObjectForKey:

答案 1 :(得分:0)

应该是,

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];
    }
}