删除NSDictionary中的特定对象

时间:2013-06-24 13:37:26

标签: ios objective-c

我的类别词典就像这样

    "category": {
        "position": 1,
        "updated_at": "2012-11-21T11:02:14+05:30",
        "is_default": false,
        "name": "Ge",
        "folders": [
            {

如何单独删除is_default为true的特定Category对象?

我尝试了以下内容 -

for(id obj in category )
{
       if([obj isEqualToString:@"is_default"] && [[category objectForKey:@"is_default"] isEqualToNumber:@0])
       {

但无法找到访问特定类别的密钥的方法,因此将其删除。

2 个答案:

答案 0 :(得分:2)

首先要做的事情: 枚举时无法从Dictionary(或数组或集)中删除对象。

但这并非不可能。

试试这个:

NSArray *keys = [category allKeys];

for(NSString *key in keys )
{
       obj = [category objectForKey:key];

       if([key isEqualToString:@"is_default"] && [[category objectForKey:@"is_default"] isEqualToNumber:@0])
       {
          [category removeObjectForKey:key]
       }
}

如果您遇到任何问题,请发表评论。

Al The Best。

答案 1 :(得分:0)

您可以像以下一样获取存储对象的键(一个对象可以多次存储在字典中,使用不同的键):

NSArray *keys = [myDictionary allKeysForObject:obj];

现在你有了密钥,删除对象很容易:

if (keys.count > 0) {
    [myDictionary removeObjectForKey:keys.lastObject];
}

顺便说一下,搜索字典的值是一个相对较慢的操作。如果经常这样做,字典可能不是最好的数据结构。