如何删除NSDictionary的元素

时间:2013-09-05 04:33:49

标签: objective-c nsarray nsdictionary

我有NSArray NSDictionaries我需要提取2个值或从下面示例中的字典中删除我不需要的值我需要删除id和NumberValue。你们中的任何人都知道我该怎么做?

Array: (
        {
            customerUS= {
                DisplayName = "level";
                InternalName = "Number 2";
                NumberValue = 1;
                id = xwrf
            },
            customerCAN= {
                DisplayName = "PurchaseAmount";
                InternalName = "Number 1";
                NumberValue = 3500;
                id = adf;
            };
        }
      )

我真的很感谢你的帮助。

4 个答案:

答案 0 :(得分:1)

我建议你阅读Apple文档。

要在创建任何Collection对象后修改它,您需要可变版本。 对于NSDictionary,我们有NSMutableDictionary。阅读here

我们有一种删除对象的方法:

- (void)removeObjectForKey:(id)aKey

还有其他方法。您可以在上述文档中轻松引用它们。

答案 1 :(得分:1)

首先,您无法删除/插入/更新 (不可变) NSDictionary/NSArray中的值,您需要将NSDictionary/NSArray转换为(可变) NSMutableDictionary/NSMutableArray

NSArray *myArr = ....;    
NSMutableArray *newMutableArr = [myArr mutableCopy];

然后您可以更改 newMutableArr

如此

for(int i = 0 ; i < newMutableArr.count ; i ++)
{
   [[newMutableArr objectAtIndex:i] removeObjectForKey:@"id"];
   [[newMutableArr objectAtIndex:i] removeObjectForKey:@"NumberValue"];
}

<强>编辑:

不使用for loopremoveObjectForKey,如果你有字典数组并且两者都是可变的,那么你也可以从数组的所有元素中删除一个键及其对象,如下所示:

[newMutableArr makeObjectsPerformSelector:@selector(removeObjectForKey:) withObject:@"id"];
[newMutableArr makeObjectsPerformSelector:@selector(removeObjectForKey:) withObject:@"NumberValue"];

答案 2 :(得分:0)

找出removeObjectForKey以从NSMutabledictionary中删除记录。

removeObjectForKey传递键值,无论你喜欢什么

这一切都是你的关键                 的 DisplayName的,                 INTERNALNAME,                 NumberValue,                 ID

喜欢这个

removeObjectForKey:@"id";

答案 3 :(得分:0)

首先,你必须将数组转换为可变数组,然后你可以从字典中删除键值对。

NSMutableArray *mutableArray = [yourArray mutableCopy];
for(int i=0;i<mutableArray.count;i++){
  NSMutableDictionary *outerDictionary = [mutableArray objectAtIndex:i];
  for(NSString *key in outerDictionary.allKeys){
    NSMutableDictionary *innerDictionary = [outerDictionary objectForKey:key];
    [innerDictionary removeObjectForKey:@"id"];
    [innerDictionary removeObjectForKey:@"NumberValue"];
  } }