Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Alamofire singleton webservercall类错误_Ios_Objective C_Swift_Swift3_Swift2.3 - Fatal编程技术网

Ios Alamofire singleton webservercall类错误

Ios Alamofire singleton webservercall类错误,ios,objective-c,swift,swift3,swift2.3,Ios,Objective C,Swift,Swift3,Swift2.3,我正在使用swift3.0以及Alamofire框架进行一个项目,以连接我的webserver调用。基本上,我想使用一个我以前在swift2.3中使用过的单例类,在这里我声明了这个方法,然后在任何我想执行它的viewcontroller中,我调用下面的方法 APIManager.sharedInstance.login(username, password: password, completion: { (user,success) in if success

我正在使用
swift3.0
以及
Alamofire
框架进行一个项目,以连接我的webserver调用。基本上,我想使用一个我以前在
swift2.3
中使用过的单例类,在这里我声明了这个方法,然后在任何我想执行它的viewcontroller中,我调用下面的方法

APIManager.sharedInstance.login(username, password: password, completion: { (user,success) in

                if success {

                }

                }) { (error) in       

 }
我的要求是让该代码在
swift3.0
中工作,以便我可以继续工作。在此方面的帮助将不胜感激。我的singleton类的代码如下所示(该代码在
swift 2.3
中,我希望它在3.0中)


这是我的经理在Swift 3.x中使用Alamofire 4.x和SwiftyJSON。我更喜欢类方法而不是单例

import UIKit
import Alamofire
import SwiftyJSON

class APIManager: NSObject {

class func apiGet(serviceName:String,parameters: [String:Any]?, completionHandler: @escaping (JSON?, NSError?) -> ()) {

    Alamofire.request(serviceName, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

        switch(response.result) {
        case .success(_):
            if let data = response.result.value{
                let json = JSON(data)
                completionHandler(json,nil)
            }
            break

        case .failure(_):
            completionHandler(nil,response.result.error as NSError?)
            break

        }
    }
}

class func apiPost(serviceName:String,parameters: [String:Any]?, completionHandler: @escaping (JSON?, NSError?) -> ()) {

    Alamofire.request(serviceName, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

        switch(response.result) {
        case .success(_):
            if let data = response.result.value{
                let json = JSON(data)
                completionHandler(json,nil)
            }
            break

        case .failure(_):
            completionHandler(nil,response.result.error as NSError?)
            break

        }
    }
}

}
然后在你想去的任何地方呼叫你的登录服务

let params = [
        "userName":"abc",
        "password":"abc"
    ]

APIManager.apiPost(serviceName: "yourLoginURL", parameters: params) { (json:JSON?, error:NSError?) in
        if error != nil {
            print(error?.localizedDescription)
            return
        }
        print(json!)
    }

因此,当问题出现在这里时,先生,正如我在我的身体中提到的,显然我的要求是将该代码转换为swift 3.0,因为它是用swift 2.3编写的。您的帮助将非常感谢我认为您可以将此代码用于SWIFT3没有问题,但请记住,您将从Alamorefire收到一些警告我认为您需要更新Alamorefire的POD(如果您使用Alamorefire的2.3 POD)我使用的是最新的POD,但我仍然收到一个错误:return manager.request(urlRequest)//API管理员没有成员“请求”@dragoneye请停止叫喊。谢谢。先生,它给了我一个错误,说不能加载'Alamorefire'的undeline模块清理和构建项目现在它说使用未声明的类型'JSON',这个类与模块加载有什么关系。这只是一个简单的帮助代码。使用检查项目设置Alamofire@danutha您必须
在控制器中导入快速JSON
。这些是你需要知道的基本情况。
import SwiftyJSON
let params = [
        "userName":"abc",
        "password":"abc"
    ]

APIManager.apiPost(serviceName: "yourLoginURL", parameters: params) { (json:JSON?, error:NSError?) in
        if error != nil {
            print(error?.localizedDescription)
            return
        }
        print(json!)
    }