如何解决将特定元素从可编码类数组映射到数组
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?
}
JSONDecoder :
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 值或使用 map 替换 nil 值:
let thumArray = gallery.compactMap({ return $0.thumb })
let thumArray = gallery.map({ return $0.thumb ?? ""})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。