NSDictionary:find一个特定的对象,并将其删除

我有NSMutableDictionary看起来像这样:

 category = ( { description = ( { id = 1; name = Apple; }, { id = 5; name = Pear; }, { id = 12; name = Orange; } ); id = 2; name = Fruits; }, { description = ( { id = 4; name = Milk; }, { id = 7; name = Tea; } ); id = 5; name = Drinks; } ); 

现在,当用户在我的应用程序中执行一个动作时,我得到了对象的@“名称”值,如“Apple”。 我想从字典中删除这个对象,但是我怎样才能用这个对象来达到这个对象

 [myDictionary removeObjectForKey:] 

方法?

在高层次上,你需要获得对“description”数组的引用。 然后遍历数组获取每个字典。 检查字典是否有匹配的“名称”值。 如果是这样,请从“description”数组中删除该字典。

 NSString *name = ... // the name to find and remove NSMutableArray *description = ... // the description array to search for (NSUInteger i = 0; i < description.count; i++) { NSDictionary *data = description[i]; if ([data[@"name"] isEqualToString:name]) { [description removeObjectAtIndex:i]; break; } } 

从INNER数组中删除某些东西:

 NSString* someFood = <search argument>; NSArray* categories = [myDictionary objectForKey:@"category"]; for (NSDictionary* category in categories) { NSArray* descriptions = [category objectForKey:@"description"]; for (int i = descriptions.count-1; i >= 0; i--) { NSDictionary* description = [descriptions objectForIndex:i]; if ([[description objectForKey:@"name"] isEqualToString:someFood]) { [descriptions removeObjectAtIndex:i]; } } } 

从外部数组中移除整个组(例如,“水果”)更简单。