1

我的分类词典是这样的

    "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])
       {

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

4

2 回答 2

2

First thing first: You can not delete object from Dictionary(or Array Or Set) while Enumerating.

But it is not impossible.

Try this:

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]
       }
}

Comment if you face any problem.

Al The Best.

于 2013-06-24T13:54:18.640 回答
0

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

NSArray *keys = [myDictionary allKeysForObject:obj];

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

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

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

于 2013-06-24T13:44:34.007 回答