2013-06-24 100 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」'是一個鍵,而不是一個值。 –

相關問題