问题描述
也不知道为什么投票否定
因此以下代码说它没有正确的情节成员,因为JSON首先传递给了PodEpisode
。然后需要将其传递到最后一个子数组
struct PodPost: Codable {
var programs: [PodEpisode]
}
struct PodEpisode: Codable {
var episode : [PodProgram]
}
struct PodProgram: Codable,Identifiable {
let id = UUID()
var title : String
var enclosureurl : String
var summary : String
}
我通过以下方式致电
func getPodcast(podurl:String,completion: @escaping ([PodProgram]) -> ()) {
let podurl = podurl
guard let url = URL(string: "https://api.drn1.com.au/api-access/programs/\(podurl)") else { return }
URLSession.shared.dataTask(with: url) { (data,_,_) in
// Based on the updated structs,you would no
// longer be decoding an array
let podcast = try! JSONDecoder().decode(PodPost.self,from: data!)
DispatchQueue.main.async{
// The array is stored under programs now
completion(podcast.episode). // THIS IS THE LINE THAT ERROR SHOWS (Value of type 'PodPost' has no member 'episode' )
}
}
}
我尝试了以下
添加一个
let episode = podcast.programs
then using that to call episode.episode // With no success.
解决方法
let podcast = try! JSONDecoder().decode(PodPost.self,from: data!)
将为您提供一个PodEpisode对象,其属性为程序
现在,在完成代码块中,您尝试调用 podcast.programs.episode ,因为该数组不能作为数组
如果您需要一集,则需要执行类似的操作
let Episode = podcast.programs.first!.episode