gpt4 book ai didi

ios - 从完成处理程序调用父函数的返回

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:22 25 4
gpt4 key购买 nike

我在 func application(application:didFinishLaunchingWithOptions launchOptions:) 中有一个网络任务执行功能。 rootViewController 默认是一个 UITabBarController。我想通过在应用程序启动时从服务器下载来同步我的品牌列表。我的代码如下:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

self.tabBarController = self.window?.rootViewController as! UITabBarController
.......
.......
.......

APICaller.getBrandsAndOutletList(withAuthToken: "87087fa228dee4fbbacada66683eb6fa94d4d8968dbc8121d275afe75a79e4b6d",
success: { (result) in
let rCode = result["rcode"] as! String
//If user revoked or access revoked for the user
guard rCode == "200" else {
let updateAppVC = UpdateAppViewController(nibName: "UpdateAppViewController", bundle: NSBundle.mainBundle())
if rCode == "401" {
let userStatus = result["status"] as! String
print(userStatus)
updateAppVC.message = userStatus
updateAppVC.buttonTitle = "Re-login"
self.window?.rootViewController = updateAppVC
//POINT-1
return
}else {
updateAppVC.message = "Some error"
updateAppVC.buttonTitle = "Retry"
self.window?.rootViewController = updateAppVC
//POINT-2
return
}

}

let brands = result["brands"] as! [[String:AnyObject]]
print(brands)
//POINT-3

}) { (errorMessage) in
print(errorMessage)
//POINT-4
}

return true //POINT-5
}

现在,发生的是网络请求,列表下载在后台进行。 return true 被执行,tabBar 出现。然后在请求完成后,调用success:failure: block 。

我想要实现的是,我不想在完成请求之前return true。所以不想在第 5 点调用 return true。相反,我想在 POINT-1、2、3、4,即我的网络请求完成时调用 return true。我可以这样做吗?如果可以,怎么做?

最佳答案

您不能使用完成 block 为上述方法创建返回值。

从上面的代码来看,您似乎想要在启动期间根据来自服务器的数据切换屏幕。而且您不希望在调用发生时显示选项卡栏 Controller 。您可以做的是拥有一个闪屏 View Controller (或一个屏幕简单事件指示器)并将其设置为 Root View Controller ,直到请求往返为止。

关于ios - 从完成处理程序调用父函数的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377014/

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