为什么在case 1
中,我的函数返回["reached end": "reached end"]
而不是响应字典的值?如何使用responseDictionary
的值返回
背景:HelperClass.doMath
取一个数字,并有一个返回字典的完成块
func handleTask(task: [String: AnyObject]) -> AnyObject {
switch task {
case 1:
if let bigNumber = task[bigNumberKey] as? NSNumber {
HelperClass.doMath(bigNumber, replyBlock: {(responseDictionary: [NSObject: AnyObject]!) -> Void in
return [responseDictionary]
})
}
case 2:
return 2
case 3:
return 3
default:
break
}
return ["reached end": "reached end"]
}
答案 0 :(得分:0)
这应该有效:
func handleTask(task: [String: AnyObject]) -> AnyObject {
switch task {
case 1:
if let bigNumber = task[bigNumberKey] as? NSNumber {
return HelperClass.doMath(bigNumber, replyBlock: {(responseDictionary: [NSObject: AnyObject]!) -> Void in
return [responseDictionary]
})
}
case 2:
return 2
case 3:
return 3
default:
break
}
return ["reached end": "reached end"]
}
您的约会replyBlock
正在传递给doMath
的{{1}}方法,并在那里用于某些目的。它在HelperClass
函数的范围内执行。因此handleTask
会将您带回return [responseDictionary]
的范围,并且不会导致case 1
返回任何内容。
你想做的事情(我假设)是返回这个函数的结果。这可以通过简单地在方法调用前添加一个返回来实现,这将返回任何结果handleTask
的产生。