如何解决变量'theData'在初始化之前使用,我该如何解决
我正在尝试使用Apollo框架和graphql api来获取数据,然后将其返回。将数据保存在另一个快速文件中后,我想调用数据的某些部分并将其分配给变量。我得到的错误是在初始化之前使用的变量。如果尝试从闭包内部返回变量,则会得到“无效函数中的非预期非无效返回值”。我听说过解决该错误的方法,但是我不完全理解该错误及其在我的代码中的工作方式。如果您需要更多代码或上下文,可以给我发消息,我可以分享我的GitHub存储库。对不起,如果代码不好,请不要烤我。我仍然是初学者。
import Foundation
import Apollo
struct AniListAPI {
let aniListUrl = "https://graphql.anilist.co"
func ObtainData(AnimeID: Int)-> QueryQuery.Data{
var theData: QueryQuery.Data
let theInfo = QueryQuery(id: AnimeID)
GraphClient.fetch(query: theInfo) { result in
switch result {
case .failure(let error):
print("A big No no happened \(error)")
case .success(let GraphQLResult):
guard let Info = GraphQLResult.data else {return}
theData = Info
}
}
return theData
}
}
解决方法
无效函数中的非预期非空值。
收到此警告的原因是因为您无法从闭包内部返回值。使用闭包而不是返回值。
func ObtainData(AnimeID: Int,completion: @escaping (Data) -> Void) {
var TheData: QueryQuery.Data
let TheInfo = QueryQuery(id: AnimeID)
GraphClient.fetch(query: TheInfo) { result in
switch result {
case .failure(let error):
print("A big no no happened retard \(error)")
case .success(let GraphQLResult):
guard let Info = GraphQLResult.data else {return}
TheData = Info
completion(TheData)
}
}
}
然后称呼它。.
ObtainData(AnimeID: 123) { (anyData) in
print (anyData)
// continue your logic
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。