對(duì)系統(tǒng)快捷生成字典進(jìn)行修改

說(shuō)明:

根據(jù)傳入?yún)?shù),快速生成字典;
在系統(tǒng)的基礎(chǔ)上進(jìn)行修改,過(guò)濾掉字符串長(zhǎng)度為0 的參數(shù);

Demo地址
https://github.com/MyHZ/DictionaryFilteredExample

原文件地址:
https://github.com/MyHZ/DictionaryFiltered

CocoaPods支持:

pod 'DictionaryFiltered'

代碼

#import <Foundation/Foundation.h>

#define FilteredDictionaryOfVariableBindings(...) [NSDictionary FilteredDictionaryOfVariableBindings:@"" # __VA_ARGS__, __VA_ARGS__]

@interface NSDictionary (ParaProduct)

+ (NSDictionary *)FilteredDictionaryOfVariableBindings:(NSString *)firstArg, ...;

@end
#import "NSDictionary+ParaProduct.h"

@implementation NSDictionary (ParaProduct)

+ (NSDictionary *)FilteredDictionaryOfVariableBindings:(NSString *)firstArg, ...
{
    firstArg = [firstArg stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    
    NSArray *allPara = [firstArg componentsSeparatedByString:@","];
    NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:allPara.count];
    
    if (firstArg)
    {
        __block va_list list;
        va_start(list, firstArg);
        
        for (id  _Nonnull para in allPara)
        {
            id arg = va_arg(list, id);
            if (arg)
            {
                if ([arg isKindOfClass:[NSString class]])
                {
                    arg = [(NSString *)arg stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
                    if ([(NSString *)arg length] != 0)
                    {
                        [dic setObject:arg forKey:para];
                    }
                }
                else
                {
                    [dic setObject:arg forKey:para];
                }
            }
        }
        va_end(list);
    }
    
    return dic;
}

@end

使用

NSString *sss1 = @"生于成";
    NSString *sss2 = @"";
    NSString *sss3 = @"333";
    NSString *sss4 = @"";
    NSString *sss5 = @"讓發(fā)";
    NSString *sss6 = @(333);
    NSString *sss9 = @"";
    NSString *sss7 = nil;
    NSString *sss8 = @"你好是 ";

    NSDictionary *dic = FilteredDictionaryOfVariableBindings(sss1,sss2,sss3,sss4,sss5,sss6,sss7,sss8,nil);
    NSLog(@"%@",dic);

結(jié)果

{
    sss1 = "\U751f\U4e8e\U6210";
    sss3 = 333;
    sss5 = "\U8ba9\U53d1";
    sss6 = 333;
    sss8 = "\U4f60\U597d\U662f";
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,692評(píng)論 19 139
  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,596評(píng)論 0 13
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,369評(píng)論 0 15
  • 〇、前言 本文共108張圖,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 19,602評(píng)論 17 410
  • 我所說(shuō)的一切都可能是錯(cuò)的!即使你贊同我的觀點(diǎn),你的生活也不會(huì)因此有任何改變!除非——你采取了相應(yīng)的行動(dòng)。 (這是書...
    書先生和路夫人閱讀 7,467評(píng)論 111 279

友情鏈接更多精彩內(nèi)容