使用Swift 2在AFNetworking中进行POST

时间:2016-02-18 19:24:47

标签: ios xcode swift

我有这段代码在我的应用程序中用于登录。它曾经在swift 1中工作,但是当我把整个应用程序带到swift时它停止了工作。注意:代码编译没有错误,问题是它没有执行请求

@IBAction func signIn(sender: AnyObject) {
        let body = NetUtils.buildLoginRequestBody(email: emailField.text!, password: passwordField.text!);
        let manager = AFHTTPRequestOperationManager();
        manager.requestSerializer = AFJSONRequestSerializer() as AFHTTPRequestSerializer;
        manager.responseSerializer = AFJSONResponseSerializer();

        barActivityIndicator.startAnimating();
        setViewsEnabled(false);

        manager.POST(LoginURL, parameters: body,
            success: { (operation: AFHTTPRequestOperation!, responseObject: AnyObject!) in
                NSLog("success code: %d", operation.response!.statusCode);
                print(JSON(responseObject))
                self.processUserData(JSON(responseObject));
                self.barActivityIndicator.stopAnimating();
                self.setViewsEnabled(true);

            },
            failure: { (operation: AFHTTPRequestOperation?, error: NSError!) in
                NSLog("error: %@", error.localizedDescription);
                self.barActivityIndicator.stopAnimating();
                self.setViewsEnabled(true);
                self.alert.show();
            }
        );
}

1 个答案:

答案 0 :(得分:0)

我猜测没有执行请求你的意思是请求失败了吗?

我在您的代码中看到的一个问题是您没有持有对您的经理的引用,因此在该函数完成后,它可能会被解除分配,导致闭包返回时失败。

如果您持有这样的参考:

var manager = AFHTTPRequestOperationManager()

func signIn(sender: AnyObject) { 
    manager.requestSerializer = ...
}

这有用吗?