arrays - 尽管包含更多条目,但数组仅在 for 循环后向 Struct 添加单个条目 - Swift/Xcode
问题描述
我正在运行 afor loop
以创建与下载文件数组匹配的过滤结果数组。输出let items
包含我想要的所有内容,但我似乎无法让它正确映射到结构中。如果我print(items)
显示所有结果,但如果我print(self.podepisodes)
在self.podepisodes = items
它之后只显示 1 个条目。
下面的更多代码用于上下文:
struct Episodes: Codable {
let show: String
let showHost: String
let showDescription: String
let showArtURL: String
let epNumber: String
let epTitle: String
let epAudioURL: String
let epArtURL: String
let epLength: String
let epDescription: String
let releaseDate: String
let date: String
let exclusive: String
let subscriptionAudio1: String
let youtubeURL: String
}
var podepisodes: [Episodes]?
//have omitted some code here in the interest of not posting a huge page load. Can edit and add it if anyone would like.
let JSONData = try JSONDecoder().decode([Episodes].self, from: data)
DispatchQueue.main.async {
guard let trueLocation = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {return }
let filePath = trueLocation.path
let fileList: Array = try! self.fileManager.contentsOfDirectory(atPath: filePath)
for file in fileList {
let items = JSONData.filter { (item: Episodes) -> Bool in
return URL(string: item.epAudioURL)?.lastPathComponent == file
}
self.podepisodes = items
print(items)
}
print(self.podepisodes)
}
解决方案
您必须将项目附加到数组中,现在您正在覆盖self.podepisodes
循环中每次的内容。所以替换self.podepisodes = items
为
self.podepisodes.append(contentsOf: items)
推荐阅读
- angular - 从请求标头中删除授权,特别是 http 调用
- vue.js - Vue中如何使用动态名称vue组件?
- javascript - 从导航栏中的 li 项中添加类/删除类(React)
- javascript - 如何使用 tdbnput 从数据库中的列中获取部分文本并在 talend 中打印
- javascript - 如何使用使用的外部图像链接将网页转换为 pdf
- r - 为什么日期范围函数在 r 中不起作用
- pytorch - Cuda 内存不足 - 矩阵乘法
- java - Java:打印出整数数组的最长序列。问题出在哪里?
- java - 如何在android studio(java)中使用单击方法从圆形图像视图中显示另一个活动/片段中的图像?
- vue.js - 如何显示我的 Stripe 默认错误?