| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- //
- // NSDictionary+JKBlock.m
- // JKCategories (https://github.com/shaojiankui/JKCategories)
- //
- // Created by Jakey on 15/5/22.
- // Copyright (c) 2015年 www.skyfox.org. All rights reserved.
- //
- #import "NSDictionary+JKBlock.h"
- @implementation NSDictionary (JKBlock)
- #pragma mark - RX
- - (void)jk_each:(void (^)(id k, id v))block {
- [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
- block(key, obj);
- }];
- }
- - (void)jk_eachKey:(void (^)(id k))block {
- [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
- block(key);
- }];
- }
- - (void)jk_eachValue:(void (^)(id v))block {
- [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
- block(obj);
- }];
- }
- - (NSArray *)jk_map:(id (^)(id key, id value))block {
- NSMutableArray *array = [NSMutableArray array];
-
- [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
- id object = block(key, obj);
- if (object) {
- [array addObject:object];
- }
- }];
-
- return array;
- }
- - (NSDictionary *)jk_pick:(NSArray *)keys {
- NSMutableDictionary *picked = [[NSMutableDictionary alloc] initWithCapacity:keys.count];
-
- [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
- if ([keys containsObject:key]) {
- picked[key] = obj;
- }
- }];
-
- return picked;
- }
- - (NSDictionary *)jk_omit:(NSArray *)keys {
- NSMutableDictionary *omitted = [[NSMutableDictionary alloc] initWithCapacity:([self allKeys].count - keys.count)];
-
- [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
- if (![keys containsObject:key]) {
- omitted[key] = obj;
- }
- }];
-
- return omitted;
- }
- - (BOOL)jk_hasKey:(NSString *)key
- {
- return [self objectForKey:key] != nil;
- }
- @end
|