gpt4 book ai didi

ios - 如何确定数组是否已包含一个值以及它是否跳到下一个值?

转载 作者:行者123 更新时间:2023-11-28 08:18:12 25 4
gpt4 key购买 nike

目前我有一个功能可以更新一些 ui(电影类别)。它从 json 中获取 ui 数据,并根据 json 给出的 url 字符串更新图像。返回的 json 数据在一个数组中,所以我目前正在做的是获取该数组中的第一个元素并将其用于 ui。唯一的问题是我注意到数组中的第一个 json 数据对多个类别使用相同的图像字符串。

我想做的是检查数组是否包含当前字符串,如果它确实跳到下一个字符串,直到它到达数组中不存在的字符串。当它到达这个字符串时,将它追加到数组中。这是我到目前为止所拥有的 -

这是我用来更新检索到的 json 信息的函数:

 static func updateGenrePoster(genreID: NSNumber, urlExtension: String, completionHandler:@escaping (_ details: [String]) -> Void){

var posterArray: [String] = []

let nm = NetworkManager.sharedManager

nm.getJSONData(type:"genre/\(genreID)", urlExtension: urlExtension, completion: {
data in

if let jsonDictionary = nm.parseJSONData(data)
{
guard let genrePoster = ResultsGenrePosters(json: jsonDictionary)

else {
print("Error initializing object")
return
}
guard let posterString = genrePoster.results?[0].poster//This is where I want to check to see if array already contains the string

else {
print("No such item")
return
}
posterArray.append(posterString)

}
completionHandler(posterArray)
})
}

这是我用来更新用户界面的函数:

 func updateUI()// updates Tableview IBOutlets
{
if let genreID = genreData.id {

GenrePosters.updateGenrePoster(genreID: genreID, urlExtension: "movies", completionHandler: {posters in

for poster in posters{

self.networkManager.downloadImage(imageExtension: "\(poster)",

{ (imageData) //imageData = Image data downloaded from web
in
let image = UIImage(data: imageData as Data)

DispatchQueue.main.async(execute: { //Must update UI on main thread so have to get main queue
self.genreCatagoryLabel.text = self.genreData.name
self.mainImageView.image = image
})
})
}

})
}

最佳答案

看来您要做的是让数组中所有不同的字符串只加载每个图像一次。

您可以通过几种方式快速做到这一点:

  1. 最初使用 Set 而不是数组,最后才返回从集合创建的数组:

    让 posterArray = Array(posterSet)完成(posterArray)

  2. 保留一个数组,最后清除重复项(例如通过转换为 set 和返回,或者有其他方式,如 contains-append)

不过,使用集合会让您失去顺序。

从您发布的代码来看,海报数组似乎总是只有一项。我是否正确理解了您要实现的目标?

关于ios - 如何确定数组是否已包含一个值以及它是否跳到下一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42013736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com