Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过URLSession从swiftUI中的API获取数据_Swift - Fatal编程技术网

无法通过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打印出真正的
错误。