功能首次超出范围

Function goes out of scope for first time

提问人:Manjunath 提问时间:7/20/2023 最后编辑:Brian Tompsett - 汤莱恩Manjunath 更新时间:7/22/2023 访问量:31

问:

我是 SwiftUI 的新手,在解析以下代码时面临挑战

func fetchFullAccountNumber(accNumberID: String) {
    Network.shared.apiGetAccountNumber(accountNumberID: accNumberID) { accNumber in
        self.fullNumber = accNumber  
    } onFailure: { error in
        //
        print(error.debugDescription)
    }        
}

上面的请求来自 Apollo GraphQL, 我的问题是,在运行上述代码时,控件第一次超出范围,即未解析,第二次开始工作正常。 我该如何解决此问题,并使其仅在第一次运行时运行?self.fullNumber

我尝试检查是否为零,但它没有解决它。accNumber

Swift 解析 GraphQL Apollo

评论

0赞 Joakim Danielson 7/20/2023
理解你的英语并不容易,但我认为你遇到的问题是你做了一个异步调用,然后在答案到达之前尝试访问该属性。fullNumber
0赞 Manjunath 7/20/2023
为什么fullNumber没有赋值,我在它操作后赋值
2赞 Joakim Danielson 7/20/2023
您需要了解异步编程的含义。它被分配了一个值,但不是直接的。
1赞 Larme 7/20/2023
,请参阅控制台中的打印件,并与您认为应该在控制台中的顺序进行比较。这应该说明异步概念。func fetchFullAccountNumber(accNumberID: String) { print("Will call Get Account Number API"); Network.shared.apiGetAccountNumber(accountNumberID: accNumberID) { accNumber in print("Did Get Account Number API"); self.fullNumber = accNumber } onFailure: { error in print(error.debugDescription) }; print("End of the Get Account Number API method") }
0赞 Manjunath 7/21/2023
我尝试添加断点来检查流程

答: 暂无答案