用空字符串替换字典数组中的 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
?。在您当前的实现中,您不会将 email
与 nil
进行比较,而是将整个对象进行比较。
【参考方案1】:
您的结构是一个字典数组。映射时,每个元素都是一个字典。使用该字典构建一个新字典,其中 NSNull
s 已被空字符串替换:
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 值的主要内容,如果未能解决你的问题,请参考以下文章
用字典值替换 Pandas Dataframe 中的部分字符串