用空字符串替换字典数组中的 NSNull 值

Posted

技术标签:

【中文标题】用空字符串替换字典数组中的 NSNull 值【英文标题】:Replace NSNull Values in Array of Dictionary with empty string 【发布时间】:2019-10-06 12:35:05 【问题描述】:

我有一个这样结构的数组,

[
        
            "Id": 20,
            "Name": "Name String",
            "Email": null 
       ,
]

我想用空字符串替换出现的空值。我已经尝试了如下的地图方法,但没有运气。

let tempResult = recordsList.map $0 is NSNull ? "" : $0 

【问题讨论】:

请说明您如何声明recordsList?。在您当前的实现中,您不会将 emailnil 进行比较,而是将整个对象进行比较。 【参考方案1】:

您的结构是一个字典数组。映射时,每个元素都是一个字典。使用该字典构建一个新字典,其中 NSNulls 已被空字符串替换:

let recordsList: [[String : Any]] = [
        [
            "Id": 20,
            "Name": "Name String",
            "Email": NSNull()
       ]
]


let result: [[String : Any]] = recordsList.map  dict in
    var newdict = [String : Any]()
    for (k, v) in dict 
        newdict[k] = v is NSNull ? "" : v
    
    return newdict


print(result)
[["Email": "", "Id": 20, "Name": "Name String"]]

这也可以通过使用Dictionary(uniqueKeysWithValues:) 并通过映射字典以将空值更改为空字符串来实现:

let result: [[String : Any]] = recordsList.map  dict in
    Dictionary(uniqueKeysWithValues: dict.map  (k, v) in (k, v is NSNull ? "" : v) )

您的问题被标记为NSDictionary。这可以通过一些更改来适应:

let result: [NSDictionary] = recordsList.map  dict in
    Dictionary(uniqueKeysWithValues: (dict as! [AnyHashable : Any]).map  (k, v) in (k, v is NSNull ? "" : v) ) as NSDictionary

【讨论】:

以上是关于用空字符串替换字典数组中的 NSNull 值的主要内容,如果未能解决你的问题,请参考以下文章

用数组中的0替换空字符串

用字典值替换字符串中的字典键

用字典值替换 Pandas Dataframe 中的部分字符串

用 DataFrame 中的 None/null 值替换空字符串

用多个字典值替换字符串中的单词?

IOS,如何在数组中的 dic 中循环 dic 以替换空字符串的空值