大佬教程收集整理的这篇文章主要介绍了Swift ui 转义闭包捕获变异的“self”参数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 init()
中使用时遇到以下问题,有人能帮我吗?
@State private var activity: [ResponseActivity] = [ResponseActivity()]
func getActivity(completion: @escaPing ([ResponseActivity]?) -> ()){
var userInfo: [ResponseActivity] = [ResponseActivity()]
let url = URL(String: "https://API.github.com/users/\(self.userInfo.login)/received_events")!
let urlrequest = URLrequest(url: url)
print("self.userInfo.login",self.userInfo.login)
let task = URLSession.shared.dataTask(with: urlrequest) { data,urlResponse,error in
guard let content = data else {
print("Error getTing data from API.")
return
}
do {
userInfo = try JsONDecoder().decode([ResponseActivity].self,from: content)
} catch {
print("Error parsing URL from data Activity.")
return
}
completion(userInfo)
}
task.resume()
}
像这样 (struct
) 的 View
中的属性是不可变的。您可以在 init
中设置初始值,但之后它们将不可变。像 @State
这样的特殊属性包装器允许您稍后更改值,但您正在尝试使用 struct
在 _activity = State(...)
上设置实际值。
我建议将这样的异步代码移动到 ObservabLeobject
中——然后,您将拥有一个具有可变属性的 class
。这意味着您的 userInfo
、isLogin
等将是 @Published
属性并且可能需要是可选的,因为它们在 getActivity
完成之前不会有值。
以上是大佬教程为你收集整理的Swift ui 转义闭包捕获变异的“self”参数全部内容,希望文章能够帮你解决Swift ui 转义闭包捕获变异的“self”参数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。