4

我一直在寻找关于如何在这里和谷歌中删除 nil、null、值的方法,我尝试了我所看到的所有内容,但我总是遇到一个异常,提示选择器不兼容。这是我的数组和带有 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>"
)

我试图删除这些值,有什么想法吗?

我的转场是这样的

-(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 是我的子视图控制器中的 NSMutableArray 并且 childPopulated 是我插入 NSMutableDictionary 的 NSMutableArray。

4

2 回答 2

4

使用[NSMutableArray removeObject:]

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

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

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

于 2013-08-30T14:01:35.583 回答
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]
于 2013-08-30T14:06:20.587 回答