我有一个包含很多空值的数组,我想从数组中删除它们。
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的长度,所以我减少文件大小超过一半,它工作得很好.....
答案 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];
}
}