变量 'theData' 在初始化前被使用,我应该如何修复
Variable 'theData' used before being initialized, How should I fix
我正在尝试使用 Apollo 框架和 graphql api 来获取数据,然后 return 它。一旦我在另一个 swift 文件中有了数据,我想调用数据的某些部分并将其分配给一个变量。我得到的错误是在初始化之前使用的变量。如果尝试 return 闭包中的变量,我会得到“Unexpected Non-Void Return Value In Void Function”。我听说过解决该错误的方法,但我不完全理解它以及它如何与我的代码一起工作。如果您需要更多代码或上下文,可以给我发消息,我可以分享我的 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
}
}
意外 Non-Void Return 无效函数中的值。
The reason you're getting this warning is because you can't return value from inside the closure. Use closure instead of returning value.
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
}
我正在尝试使用 Apollo 框架和 graphql api 来获取数据,然后 return 它。一旦我在另一个 swift 文件中有了数据,我想调用数据的某些部分并将其分配给一个变量。我得到的错误是在初始化之前使用的变量。如果尝试 return 闭包中的变量,我会得到“Unexpected Non-Void Return Value In Void Function”。我听说过解决该错误的方法,但我不完全理解它以及它如何与我的代码一起工作。如果您需要更多代码或上下文,可以给我发消息,我可以分享我的 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
}
}
意外 Non-Void Return 无效函数中的值。
The reason you're getting this warning is because you can't return value from inside the closure. Use closure instead of returning value.
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
}