gpt4 book ai didi

ios - 类型 'customDataObject' 不符合协议(protocol) 'Sequence'

转载 作者:行者123 更新时间:2023-11-30 12:42:56 25 4
gpt4 key购买 nike

我想要做的是检索 json 数据(采用数组格式)并检查我的本地数组是否已包含该数据,如果它确实移动到 JSON 数据中的下一个值,直到它们是数组不包含的值,然后将其附加到数组中。数组中的数据必须按顺序排列。我现在尝试执行此操作,但出现错误:

Type 'ResultsGenrePosters' does not conform to protocol 'Sequence'

这就是它的样子:

public struct ResultsGenrePosters: Decodable {

public let results : [GenrePosters]?

public init?(json: JSON) {
results = "results" <~~ json
}
}


public struct GenrePosters: Decodable {

public let poster : String

public init? (json: JSON) {

guard let poster: String = "poster_path" <~~ json
else {return nil}
self.poster = poster
}

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 genrePosters = ResultsGenrePosters(json: jsonDictionary)

else {
print("Error initializing object")
return
}
guard let posterString = genrePosters.results?[0].poster

else {
print("No such item")
return
}

for posterString in genrePosters {

if posterArray.contains(posterString){continue
} else { posterArray.append(posterString) } //This is where the error happens

}
}
completionHandler(posterArray)
})
}

}

最佳答案

Alt + 单击“genrePosters”,它告诉您什么?它应该显示其 ResultsGenrePosters,因为这就是错误所说的内容。现在看posterArray的类型;它是一个字符串数组,而不是 Array ResultsGenrePosters。我认为您的意思是为在genrePosters中的海报编写,并且对类型感到困惑,因为您在为在genrePosters中编写了posterString

也许你想使用map将genrePosters转换成[String]?

这会将海报数组(如果存在)转换为仅包含海报名称的数组。如果它不存在,您将得到一个空数组。仅当海报是字符串时这才有效。如果是字符串?你应该使用 flatMap 来代替。

let posterNames = genrePosters.results?.map { $0.poster } ?? [String]()

关于ios - 类型 'customDataObject' 不符合协议(protocol) 'Sequence',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030812/

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