我正在swift 3.0
与框架的支持一起开发一个项目,Alamofire
以连接我的 webservercalls。基本上我想使用一个我以前在swift 2.3
声明方法的地方使用的单例类,然后在我想要执行它的任何视图控制器中,我将方法称为如下。
APIManager.sharedInstance.login(username, password: password, completion: { (user,success) in
if success {
}
}) { (error) in
}
我的要求是让这个代码工作,swift 3.0
这样我就可以继续工作。对此的帮助将不胜感激。我的单例类的代码如下(此代码在 中swift 2.3
,我想要在 3.0 中)。
import UIKit
import Alamofire
import SwiftyJSON
struct Singleton {
static let instance : APIManager = APIManager()
}
public class APIManager: NSObject {
public class var sharedInstance: APIManager {
return Singleton.instance
}
let manager = Manager()
override init() {
}
//MARK:====Login====
//MARK: methods
func login(username: String, password: String, completion: (user: User, success: Bool) -> (), failed:(error: NSError) -> ()) -> Request {
let urlRequest // Create a URLRequest and pass to the method
return manager.request(urlRequest)
.validate()
.responseJSON { response in
if let error = response.result.error {
failed(error: error)
print(error)
return;
}
let ok = ((response.result.value as! JSONDictionary)["success"] as? Bool)!
let userJson = JSON((response.result.value as! JSONDictionary)["user"]!)
let token = ((response.result.value as! JSONDictionary)["token"] as? String)!
NSUserDefaults.standardUserDefaults().setValue(token, forKey: UserDefaultKey.Token)
NSUserDefaults.standardUserDefaults().synchronize()
let user = User(json: userJson)
completion(user: user,success: ok)
print ("Auth is : \(token)")
}
}
}