微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将特定元素从可编码类数组映射到数组

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 举报,一经查实,本站将立刻删除。