首页 > 解决方案 > 尽管包含更多条目,但数组仅在 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)
}

标签: arraysswiftxcode

解决方案


您必须将项目附加到数组中,现在您正在覆盖self.podepisodes循环中每次的内容。所以替换self.podepisodes = items

self.podepisodes.append(contentsOf: items)

推荐阅读