gpt4 book ai didi

swift - 从闭包中的函数返回

转载 作者:可可西里 更新时间:2023-11-01 02:19:33 25 4
gpt4 key购买 nike

为什么在 case 1 中,我的函数返回 ["reached end": "reached end"] 而不是响应字典的值?如何让它返回 responseDictionary 的值?

背景:HelperClass.doMath 接受一个数字并有一个返回字典的完成 block

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"]
}

最佳答案

这应该有效:

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 被传递给 HelperClassdoMath 方法,并在那里用于某些目的。它在您的 handleTask 函数的范围内执行。因此,return [responseDictionary] 会将您带回到您的案例 1 的范围内,并且不会导致 handleTask 返回任何内容。
你想做的(我假设)是返回这个函数的结果。这可以通过简单地在方法调用前添加一个 return 来实现,这将依次返回 doMath 产生的任何结果。

关于swift - 从闭包中的函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31840621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com