在NSMutableArray </null>中删除NSMutableDictionary内的<null>

时间:2013-08-30 13:58:33

标签: ios objective-c nsmutablearray nsmutabledictionary

我一直在寻找一段时间如何删除nil,null,值在这里和谷歌尝试所有我所看到的但我总是有一个例外,说选择器不兼容。 这是我的Array和带有NSMutableDictionary

的NSMutableArray
Array Value = (
        {
           "sub_desc" = "sub cat description of Laptop";
           "sub_name" = Laptop;
        },
        {
           "sub_desc" = "sub cat description of Printers";
           "sub_name" = Printers;
        },
           "<null>",
           "<null>",
           "<null>",
           "<null>"
)

我试图删除值,任何想法?

我的segue就像这样

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"MySegue"]) {

        ChildTableViewController *myNextPage = [segue destinationViewController];
        if ([myNextPage isKindOfClass:[ChildTableViewController class]]){  
            NSString *key = [[[parsedData listPopulated]objectAtIndex:self.tableView.indexPathForSelectedRow.row]valueForKey:@"name"];
            myNextPage.childData = [[parsedData childPopulated]valueForKey:key]; 
        }
    }
}

和childData是我的Child View Controller中的NSMutableArray,而childPopulated是一个NSMutableArray,我插入NSMutableDictionary。

2 个答案:

答案 0 :(得分:4)

使用[NSMutableArray removeObject:]

  

删除给定对象数组中的所有匹配项。

NSMutableArray *array = ...;
[array removeObject:@"<null>"];

注意:您的数组包含字典和字符串对象的混合;不只是字典对象。

答案 1 :(得分:2)

此代码应该是:

NSMutableIndexSet *indexSet;
for (NSUinteger i = 0; i < [array count]; i++) {
    if (![array[i] isKindOfClass:[NSNull class]]) {
        [indexSet addIndex:i]
    }
}
array = [array objectsAtIndexes:indexSet]

如果要删除字符串 null 的对象,则:

NSMutableIndexSet *indexSet;
for (NSUinteger i = 0; i < [array count]; i++) {
    if ([array[i] isKindOfClass:[NSString class]] && [array[i] isEqualToString:@"<null>") {
        [indexSet addIndex:i]
    }
}
[array removeObjectsAtIndexes:indexSet]