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]; } } }
从外部数组中移除整个组(例如,“水果”)更简单。
- 将一个UIViewController更改为一个故事板内的UITableViewController?
- OpenGL ES 1具有不同uv坐标的多纹理
- 不推荐使用UIAlertView:首先在iOS 9.0中弃用
- iOS 11. KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED是什么意思?
- 使用具有相同方法名称的类别扩展一个类
- iOS 7中,范围栏在search模式下变为黑色
- 如何在build筑物地图中获得精确的当前位置
- Mac OSX在构buildMonoDevelop iOS App时要求获得钥匙串访问权限
- iOS 8 PhotoKit。 从iCloud照片共享相册中获取最大尺寸的图像