Swift 如何调用CompletionHandler方法?

Swift 如何调用CompletionHandler方法?,swift,Swift,我已经创建了一个方法,但不知道如何传递参数和管理响应参数 class func postWithURL(serverlink:String, methodname:String, param:NSDictionary, key:String, CompletionHandler : @escaping (Bool,NSDictionary) -> ()) 感谢填写方法示例: func sampleCompletionMethod(name: String, completion:@e

我已经创建了一个方法,但不知道如何传递参数和管理响应参数

class func postWithURL(serverlink:String, methodname:String, param:NSDictionary, key:String,  CompletionHandler : @escaping  (Bool,NSDictionary) -> ())

感谢填写方法示例:

func sampleCompletionMethod(name: String, completion:@escaping(Bool)->()) {
    DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
        completion(true)
    }
}
这就是你所说的:

sampleCompletionMethod(name: "Abc") { (result) in
    print("Result of completion : \(result)")
}
您的方法不应包含以下类关键字:

func postWithURL(serverlink:String, methodname:String, param:NSDictionary, key:String, CompletionHandler : @escaping (Bool,NSDictionary) -> ()) {

}
postWithURL(serverlink: "link", methodname: "POST", param: NSDictionary(), key: "key") { (boolResutl, dictionay) in

}
如果函数位于另一个类中,则创建该类的对象,例如,如果类名为NetworkHelper,则添加NetworkHelper以调用它

可以这样称呼:

func postWithURL(serverlink:String, methodname:String, param:NSDictionary, key:String, CompletionHandler : @escaping (Bool,NSDictionary) -> ()) {

}
postWithURL(serverlink: "link", methodname: "POST", param: NSDictionary(), key: "key") { (boolResutl, dictionay) in

}
编辑:Prashant Tukadiya建议


在swift 4中,使用NSDictionary是不好的做法。您应该使用Swift的本机字典类

以下是如何调用您的方法:

self.postWithURL(serverlink: "link", methodname: "name", param:NSDictionary(), key: "key") { (bool, dictionary) in
            // you code goes here
        }

你想实现什么?我有一个web服务的固定文件。我有写信的方法。但我不知道如何从我的登录控制器调用这个方法。如果你开始键入方法名xcode autocomplete,它会建议你一个最好的方法。即使你不需要打字;我建议你阅读苹果公司的文档,阅读沙拉德·乔汉的答案,但不要在swift 4中使用NSDictionary。在swift 4中使用字典是不好的做法。您应该使用Swift的本机字典类,您可以编写代码来解析响应吗?假设我想从Response获得价值,而不是如何获得价值。请编写示例代码。响应取决于您从服务器获取数据的方式。另外,你在应用程序的网络层使用了什么?我建议你调查一下阿拉莫菲尔。它是一个非常方便的swift库,用于发出网络请求和处理响应。你可以找到大量的例子和帮助。