ios - 如何访问数组中自定义对象的值?

标签 ios arrays swift

我目前有一个自定义对象

public struct GenreData : Decodable {


  public let id : NSNumber?
  public let name : String


  public init?(json: JSON) {

    guard let name : String = "name" <~~ json
      else {return nil}

    self.id = "id" <~~ json
    self.name = name

  }
}

我有一个自定义对象的数组,并且正在尝试访问该对象的“id”部分,以便我可以将其插入另一个函数:

  var genreDataArray: [GenreData] = []
  var posterStringArray: [String] = []
  var posterImageArray: [UIImage] = []

 GenreData.updateAllData(urlExtension:"list", completionHandler: { results in

      guard let results = results else {
        print("There was an error retrieving info")
        return
      }
      self.genreDataArray = results

      for _ in self.genreDataArray {

      if let movieGenreID = self.genreDataArray[0].id {//This is where the ID is needed to access the posters

        print(movieGenreID)

        //Update posters based on genreID
        GenrePosters.updateGenrePoster(genreID: movieGenreID, urlExtension: "movies", completionHandler: {posters in

          //Must iterate through multiple arrays with many containing the same poster strings
          for poster in posters {

            //Check to see if array already has the current poster string, if it does continue, if not append to array
            if self.posterStringArray.contains(poster){
              continue
            } else {
              self.posterStringArray.append(poster)

              //Use the poster string to download the corresponding poster
              self.networkManager.downloadImage(imageExtension: "\(poster)",
                { (imageData) //imageData = Image data downloaded from web
                  in
                  if let image = UIImage(data: imageData as Data){
                    self.posterImageArray.append(image)

                  }
              })
            }
          }
        })
      }
      }
      DispatchQueue.main.async {
        self.genresTableView.reloadData()
      }
    })

到目前为止,它所做的就是访问 JSON 数据的第一个数组(有 19 个数组)并将第一个数组中的每个字符串附加到 posterStringArray,但我需要它遍历每个数组并仅附加如果海报字符串数组中尚不存在字符串。

最佳答案

我不能百分百确定我理解你的问题,但你不应该替换:

for _ in self.genreDataArray {

  if let movieGenreID = self.genreDataArray[0].id 

for item in self.genreDataArray {

  if let movieGenreID = item.id 

更新

要仅添加一项,请尝试在获取图像后添加中断:

          //Use the poster string to download the corresponding poster
          self.networkManager.downloadImage(imageExtension: "\(poster)",
            { (imageData) //imageData = Image data downloaded from web
              in
              if let image = UIImage(data: imageData as Data){
                self.posterImageArray.append(image)

              }
          })

          break

关于ios - 如何访问数组中自定义对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42123266/

相关文章:

ios - 带有 NSFetchedResultsController 的 UITableView : Sort each section independently of each other

javascript - 如果值存在,为什么indexOf(char) 为0?

php中的javascript数组在提交时使用Ajax不起作用

ios - 如果实现类标记为私有(private),则不调用委托(delegate)方法?

带有部分的 iOS tableView - 如何获取全局索引

ios - 不同类中的 NSURLconnection

ios - 等待调用 Web 服务的响应

arrays - 按值对 map 排序,然后将其放入GO中的另一张 map 中

ios - CLLocationManager.requestLocation() 大约需要 10 秒

sql - 如何使用watchkit实现watch-only数据库