2013-06-24 67 views
1

我的分类字典是这样删除特定对象中的NSDictionary

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

如何删除单独一个特定的类别对象已is_default为真?

我尝试以下 -

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

,但未能找到一种方法来访问特定类别的关键,因此将其删除。

+0

你想如何“删除”这个对象? – 2013-06-24 13:41:22

+0

您能否详细介绍一下您的注意事项以及我们的注意事项。我想我们看看你的JSON输入? 'catebory'是什么类型?当''is_default“'是'false'时,你想要删除什么? –

+0

不明确的问题。第一个块(“类别”)是否是一些解析为嵌套字典的JSON?类别是类吗?嵌套字典之一? –

回答

0

可以拿到钥匙了(对象可以使用不同的密钥被存储在字典多次,)你的对象存储在这样的:

NSArray *keys = [myDictionary allKeysForObject:obj]; 

现在,你有钥匙(S) ,很容易删除对象:

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

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

+1

我认为你的意思是'removeObjectForKeys:',并且不需要将键声明为'id'。 'allKeysForObject:'将返回一个'NSArray'。 –

+0

@ GabrielePetronella,如果他的意思是那么他会删除所有键的所有对象。意思是他可以简单地使用'removeAllobjects:'。坦率地说,我认为这甚至不能解决问题。然而,关于表演的评论是非常正确的。 –

+0

你说得对,伙计们,我不知道当我发布这些信息时我在想什么。它从未工作过。我对他的主要问题(如何在字典中找到价值的关键)做出了一个更清晰的答案。答案现在也更通用,所以希望对未来的读者有更多帮助。 – fzwo

2

第一件事第一件事:枚举时不能从Dictionary(或Array或Set)中删除对象。

但这不是不可能的。如果你面对任何问题

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

可能你的意思是'if([key isEqualToString:@“is_default”] && [obj isEqualToNumber:@ 0])'? – Mat

+0

@Mat感谢您的关注。 – CRDave

+0

'“is_default”'是一个键,而不是一个值。 –

相关问题