无法通过URLSession从swiftUI中的API获取数据
这是我获取数据的代码,我定义了一个类和两个结构无法通过URLSession从swiftUI中的API获取数据,swift,Swift,这是我获取数据的代码,我定义了一个类和两个结构 struct Aude: Codable{ var name: String var username: String var avatar_path: String var rating: Int? } struct RevInfo: Codable, Identifiable{ var id: String var author: String var created_
struct Aude: Codable{
var name: String
var username: String
var avatar_path: String
var rating: Int?
}
struct RevInfo: Codable, Identifiable{
var id: String
var author: String
var created_at: String
var author_details: Aude
var content: String
}
class getReview: ObservableObject {
// 1.
@Published var todos = [RevInfo]()
init() {
self.idStr = idStr
let url = URL(string: "https://hw9node-310902.uc.r.appspot.com/moviereviews/24428" )!
// 2.
URLSession.shared.dataTask(with: url) {(data, response, error) in
do {
if let todoData = data {
// 3.
let decodedData = try JSONDecoder().decode([RevInfo].self, from: todoData)
DispatchQueue.main.async {
self.todos = decodedData
}
} else {
print("No data")
}
} catch {
print("Error")
}
}.resume()
}
}
下面是我想要得到的json,它是一个RevInfo数组,每个RevInfo包含一个Aude
[{
"author":"Gimly",
"author_details":{
"name":"Gimly",
"username":"Ruuz",
"avatar_path":"/xUObnJSvHrFPsIpoDmb1jiQZLq7.jpg",
"rating":9
},
"content":"**A long format...",
"created_at":"2017-10-27T02:47:35.267Z",
"id":"59f29e47c3a3687126003ccd",
"updated_at":"2017-10-27T15:59:53.935Z",
"url":"https://www.themoviedb.org/review/59f29e47c3a3687126003ccd"
},
{
"author":"Per Gunnar Jonsson",
"author_details":{
"name":"Per Gunnar Jonsson",
"username":"Dark Jedi",
"avatar_path":"/https://secure.gravatar.com/avatar/cbabaea0fa98692d00130498d7ac5d7c.jpg",
"rating":null
},
"content":"After the recent ...",
"created_at":"2018-01-22T06:06:56.333Z",
"id":"5a657f809251410b2d030491",
"updated_at":"2018-01-22T22:36:05.204Z",
"url":"https://www.themoviedb.org/review/5a657f809251410b2d030491"
}
...
]
我发现问题可能来自
var author\u details:Aude
和结构的定义Aude
,因为我可以在删除var author\u details:Aude
时获得数据,但我需要使用Aude
的评级属性。有人能帮我吗?作为回应,作者详细信息中的化身路径可以为空。因此,在Aude struct中使avatar_路径可选。我只是通过使rating属性可选来解决它,因为avatar_路径在我的项目中没有用处,我只是忽略它。但是无论如何,感谢您帮助meRather打印出真正的错误。