【发布时间】:2017-03-30 06:26:46
【问题描述】:
我有一个如下所示的 Objective-c 函数
+ (void) invokeSortingWithClassName: (NSString*) className functionName: (NSString*) functionName closure: (id(^)(NSArray* arr))closure;
我必须从 swift 类中调用此方法。调用此方法的 swift 代码如下所示
SortHandler.invokeSorting(withClassName: className, functionName: functionName, closure:
{
args in
let something = unwrap(args!)
do
{
let returnValue = try closure(something as NSArray!) //this is another closure coming as a parameter in the function in which this code is written and this throws
return returnValue;
}
catch
{
throw error
}
return "-1" as! T
})
本质上,这个闭包会抛出一个错误,我不确定如何在这个函数的objective-c定义中处理这个错误。请帮我解决这个错误
【问题讨论】:
-
你的闭包不会抛出错误。您将需要简单地返回
nil来指示失败甚至导致运行时异常,具体取决于问题的严重程度。投掷后的回报也是没有意义的。 -
为什么闭包不能抛出错误?是否有任何 Apple 文档支持它或链接到任何其他博客/SO 帖子?
-
闭包可以抛出,但这个闭包不能;它没有被声明为抛出(这是错误消息告诉你的)并且它不能被声明为抛出,因为它是在一个 Objective-C 类中声明的,而 Objective-C 对 Swift 异常一无所知。
-
这正是我的问题——我如何在objective-c中声明相同的内容?有办法吗?
-
有一种方法可以处理它:uraimo.com/2015/11/03/… - 但是,我无法解决它的闭包问题。
标签: ios objective-c swift