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库,用于发出网络请求和处理响应。你可以找到大量的例子和帮助。