我正在使用swiftyjson库,并编写了此代码来检索urlImage。
for (_, value) in json["assets"] {
for item in value.arrayValue {
let urlImage = item["urlImage"].stringValue
}
}
我想使用平面方法进行重构。有什么建议吗?
答案 0 :(得分:1)
这是使用flatMap
和map
的方式。由于必须遍历两个数组,因此两个映射是必需的。如果$0
的名称不是{ arg in
的形式,则它是闭包中的标准参数名称。
let urlImages: [String] = jsonObject["assets"].arrayValue.flatMap{
$0.arrayValue.map{ $0["urlImage"].stringValue }
}
并过滤掉空的urlImages:
let z: [String] = jsonObject["assets"].flatMap{
$1.compactMap{
let urlImage = $1["urlImage"].stringValue
return urlImage == "" ? nil : urlImage
}
}
let z2: [String] = jsonObject["assets"].flatMap{
$1.compactMap{ $1["urlImage"].stringValue }.filter{ $0 != "" }
}
答案 1 :(得分:1)
简单:
let urlImageArray = json["assets"].map{$1}.map{$0["urlImage"].stringValue}