gpt4 book ai didi

ios - 从服务器获取值的异步问题

转载 作者:行者123 更新时间:2023-11-29 01:08:38 25 4
gpt4 key购买 nike

在我的viewDidLoad中我这样做:

// Get Profile Info
NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in
let getMyProfileURL = "\(self.property.host)\(self.property.getMyProfile)"
print(getMyProfileURL)
Alamofire.request(.POST, getMyProfileURL, parameters: self.property.profileParameteres, encoding: .JSON).responseJSON { response in
do {
let json = JSON(data: response.data!)

if json["user"].count > 0 {
self.profileDetails.append(ProfileDetailsModel(json: json["user"]))
}
}
}

print(self.profileDetails[0].firstName)
}

所以,当我想从数组中获取 firstName 时:

 print(self.profileDetails[0].firstName)

我的应用程序因错误而崩溃:

fatal error: Array index out of range

我的数组是空的。我为此使用了 NSOperationQueue,但我仍然得到空数组并崩溃。如何解决此问题并从 Controller 中的任何位置访问我的 filled 数组,而不仅仅是在 Alamofire block 内?

最佳答案

该请求是异步的,它只会在收到应答时填充 self.profileDetails 数组,并执行 completionHandler block 。

在您的代码中,您调用执行异步任务,它将在另一个线程中运行,应用程序返回到下一个操作并立即尝试访问 self.profileDetails,使用 at时间可能仍然是nil

您必须等待完成处理程序 block 完成填充数组,然后才能访问数据。

@Md.Muzahidul Islam 的代码,将按您的意愿运行。

关于ios - 从服务器获取值的异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36030910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com