Swift - Alamofire 的完成处理程序

3

我正在使用Alamofire从Web API检索数据:

func getData(completionHandler: (responseObject: NSDictionary?) -> ()) -> () {
    Alamofire.request(.GET, "http://example.com/api/resource/")
        .validate()
        .authenticate(user: user, password: password)
        .responseJSON { (request, response, responseObject) in

            switch responseObject {
                case .Success:
                    print("Validation Successful")
                    completionHandler(responseObject: responseObject as? NSDictionary)
                case .Failure(_, let error):
                    print(error)
            }

    }
}

override func viewDidLoad() {
    super.viewDidLoad()

    getData { (str, error) in
        if str != nil {
            print(str)
        } else {
            print(error)
        }
    }
}

当我运行代码时,出现了一个错误,错误如下所示。
Command failed due to signal: Segmentation fault: 11

我不知道它出了什么问题,也不知道如何修复。 非常感谢您的任何建议。
2个回答

3

您正在错误地调用getData。当它只需要一个responseObject参数时,您将完成处理程序的两个参数(str、error)传递。


2

曾经在使用Alamofire时遇到过类似的问题。我删除并重新导入了框架,然后它就正常工作了。看起来编译器对此有些问题。

无论如何,尝试通过Product > Clean清理你的项目。

如果仍然无法正常工作,请尝试设置断点(或简单地注释掉)你的嵌套部分以确定故障位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接