我如何从 AlamoFire 退货?
Posted
技术标签:
【中文标题】我如何从 AlamoFire 退货?【英文标题】:How do I return something from AlamoFire? 【发布时间】:2015-04-04 23:33:40 【问题描述】:import Foundation
import Alamofire
import UIKit
import SwiftyJSON
class APIClient: UIViewController
let loggedIn = false
struct Constants
static let Domain = "http://gogogo.com"
func authenticate() -> Bool
println("Authenticating")
if let access_token = FBSDKAccessToken.currentAccessToken().tokenString
let parameters = [ "access_token": access_token ]
Alamofire.request(.POST, Constants.Domain+"/accounts", parameters: parameters).responseJSON
(req, res, json, error) in
if(error != nil)
self.sendReturnToSplash()
else
let json = JSON(json!)
println("\(json)")
return true //This doesn't work!!!!!!
else
println("No access token to authenticate")
func sendReturnToSplash()
let center = NSNotificationCenter.defaultCenter()
let notification = NSNotification(name: NotificationCenters.ReturnToSplash, object: self, userInfo: ["":""])
center.postNotification(notification)
如您所见,如果注销成功,我想返回“true”。但是,XCode 给了我一个“Void 不符合协议 BooleanLiteral”
【问题讨论】:
对函数使用完成块,看看是否注销成功。 【参考方案1】:由于您使用的是异步调用,因此您应该将您的身份验证函数视为异步的。我建议使用类似于以下的完成块:
func authenticate(completion:(success: Bool) -> Void)
println("Authenticating")
if let access_token = FBSDKAccessToken.currentAccessToken().tokenString
let parameters = [ "access_token": access_token ]
Alamofire.request(.POST, Constants.Domain+"/accounts", parameters: parameters).responseJSON (req, res, json, error) in
if error != nil
self.sendReturnToSplash()
completion(success: false)
else
let json = JSON(json!)
println("\(json)")
completion(success: true)
else
println("No access token to authenticate")
completion(success: false)
【讨论】:
以上是关于我如何从 AlamoFire 退货?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 5 在 Xcode 10.2.1 中添加 alamofire