将特定元素从可编码数组 类 映射到数组
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 ?? ""})
图库是以下模型中 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 ?? ""})