将特定元素映射到可编码类数组中的数组



Gallery是以下模型中ProviderGallery的数组。我正在尝试在不使用forloop的情况下将ProviderGallery的特定变量提取到数组中。下面的代码用于循环,以获取所需的元素。

型号:

struct ProviderProfileData : Codable{
let message : String?
let gallery : [ProviderGallery]?

}

struct ProviderGallery : Codable {
let id : Int?
let file_name : String?
let thumb : String?
let mime_type : String?
let duration : String?
let size : String?
}

JSON解码器:

do {
let decoder = JSONDecoder()
let providerProfileDetails = try decoder.decode(ProviderProfileData.self, from: data)
print("data (providerProfileDetails)")
// Here i am getting desired value into array using forloop 

if let gallery = providerProfileDetails.data.gallery {

var thumbArray = [String]()

for i in 0..<gallery.count{
thumbArray.append(gallery[i].thumb ?? "")
}
print("thumbs (thumbArray)")
}



}catch let error {
print("Error (error.localizedDescription)")
}

使用compactmap删除所有nil值,或者如果要替换nil值则使用map:

let thumArray = gallery.compactMap({ return $0.thumb })
let thumArray = gallery.map({ return $0.thumb ?? ""})

最新更新