Viz*_*llx 5 xcode objective-c ios completionhandler swift
我正在尝试调用一个 swift 方法,它是这样实现的:-
@objc class DataAPI: NSObject {
func makeGet(place:NSString , completionHandler: (String! , Bool!) -> Void)
{
var str:String = ""
let manager = AFHTTPSessionManager()
manager.GET("https://api.com", parameters: nil, success:
{ (operation, responseObject) -> Void in
str = "JSON: \(responseObject!.description)"
print(str)
completionHandler(str,false) //str as response json, false as error value
},
failure: { (operation,error: NSError!) in
str = "Error: \(error.localizedDescription)"
completionHandler("Error",true)
})
}}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试在我的 Objective C 类中调用它时,它抛出错误“没有可见的 DataAPI 接口声明选择器 makeGet:completionHandler”
这就是我在 Objective C 类中调用方法的方式:-
[[DataAPI new] makeGet:@"" completionHandler:^{
}];
Run Code Online (Sandbox Code Playgroud)
小智 2
您不应该在闭包中使用 !(ImplicitUnwrappedOptional) 关键字。这不允许桥接到 ObjC 代码。只需删除即可!从关闭。
func makeGet(place:NSString , completionHandler: (String! , Bool!) -> Void)
Run Code Online (Sandbox Code Playgroud)
到
func makeGet(place:NSString , completionHandler: (String , Bool) -> Void)
Run Code Online (Sandbox Code Playgroud)