从您的问题表述中不清楚您要解决什么问题。但是您已经在上面的问题评论中阐明了您的意图。
正如我现在理解的问题一样,您有一些代码可以更新服务器上的配置文件并处理服务器的响应。该代码在两种情况下调用,一种由用户手动请求启动,另一种由推送通知启动。在第一种情况下,您不想在处理来自服务器的响应后生成警报,但在第二种情况下您会这样做。
您确实有一个闭包,您可以使用它来处理不同的行为,即使差异发生在进程的异步部分。这是一个可能看起来如何的草图(不是实际的工作代码):
func updateProfile(parameters: [String:String], showAlert: Bool) {
Alamofire.request(.POST, "http://myserver.com/profile", parameters: parameters)
.response { (request, response, data, error) in
if (error == nil) {
processProfileResponse(response)
if showAlert {
showProfileWasUpdatedAlert()
}
}
}
}
注意showAlert
传递给updateProfile
方法的参数。如果你传入,它会在收到服务器的响应后true
调用该方法来显示你的警报。showProfileWasUpdatedAlert
请注意,这个布尔值被处理 Alamofire 响应的闭包“捕获”,因为闭包是在updateProfile
函数内部定义的。
恕我直言,这比在 AppDelegate 中声明一个全局应用程序更好。