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

Map specific element to array from array of codable classes

图库是以下模型中 ProviderGallery 的数组。我试图在不使用 forloop 的情况下将 ProviderGallery 的特定变量获取到数组。下面的代码我用 for 循环来获取所需的元素。

型号:

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 [=10=].thumb })
   let thumArray = gallery.map({ return [=10=].thumb ?? ""})