iOS KeyMapping

昨天遇到一個(gè)需求瓦宜,大致是這樣子的

{
  key = value;
  anotherKey = anotherValue;
}

將上面的 Dictionary 轉(zhuǎn)換成

{
  newKey = value;
  newAnotherKey = anotherValue;
}

也就是值不變,key 變化站宗。那就是一個(gè) KeyMapping 映射

那自然是用一個(gè) Category 來做秧骑,參數(shù)是 映射字典
上代碼

@interface NSDictionary (ZBKeyMapping)
- (NSDictionary *)zbRemapKeyWithMappingDictionary:(NSDictionary *)keyMappingDic removingNullValues:(BOOL)removeNulls;
@end
@implementation NSDictionary (ZBKeyMapping)
- (NSDictionary *)zbRemapKeyWithMappingDictionary:(NSDictionary *)keyMappingDic removingNullValues:(BOOL)removeNulls {
    __block NSMutableDictionary *newDictionary = [NSMutableDictionary dictionaryWithCapacity:[self count]];
    
    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        if (removeNulls) {
            if ([obj isEqual:[NSNull null]]) {
                return;
            }
        }
        
        id newKey = keyMappingDic[key];
        if (!newKey) {
            [newDictionary setObject:obj forKey:key];
        } else {
            [newDictionary setObject:obj forKey:newKey];
        }
    }];
    return [newDictionary copy];
}
@end

然后是簡(jiǎn)單的使用

NSDictionary *oringinDic = @{@"key":@"value",@"anotherKey":@"anotherValue"};//原來的字典
NSDictionary *mappingDic = @{@"key":@"newKey"};//映射字典,這里只映射一個(gè)Key
NSDictionary *newDic = [oringinDic zbRemapKeyWithMappingDictionary:mappingDic removingNullValues:YES];
NSLog(@"映射后的 Dic: %@", newDic);

打印一下

映射前: {
  key = value;
  anotherKey = anotherValue;
}
映射后: {
  newKey = value;
  anotherKey = anotherValue;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市峦朗,隨后出現(xiàn)的幾起案子建丧,更是在濱河造成了極大的恐慌,老刑警劉巖波势,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翎朱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡尺铣,警方通過查閱死者的電腦和手機(jī)拴曲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凛忿,“玉大人澈灼,你說我怎么就攤上這事〉暌纾” “怎么了叁熔?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)床牧。 經(jīng)常有香客問我荣回,道長(zhǎng),這世上最難降的妖魔是什么戈咳? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任心软,我火速辦了婚禮,結(jié)果婚禮上著蛙,老公的妹妹穿的比我還像新娘删铃。我一直安慰自己,他們只是感情好踏堡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布猎唁。 她就那樣靜靜地躺著,像睡著了一般顷蟆。 火紅的嫁衣襯著肌膚如雪诫隅。 梳的紋絲不亂的頭發(fā)上缎患,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音阎肝,去河邊找鬼挤渔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛风题,可吹牛的內(nèi)容都是我干的判导。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼沛硅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼眼刃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起摇肌,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤擂红,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后围小,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昵骤,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年肯适,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了变秦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡框舔,死狀恐怖蹦玫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刘绣,我是刑警寧澤樱溉,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站纬凤,受9級(jí)特大地震影響福贞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜移斩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一肚医、第九天 我趴在偏房一處隱蔽的房頂上張望绢馍。 院中可真熱鬧向瓷,春花似錦、人聲如沸舰涌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓷耙。三九已至朱躺,卻和暖如春刁赖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背长搀。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國打工宇弛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人源请。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓枪芒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親谁尸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舅踪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容