【发布时间】:2021-09-20 20:23:39
【问题描述】:
func fetchParseNSyncJson2(parseNSyncFunction: @escaping(String)->Void) {
if 200 == 200 {
print("Got the json")
parseNSyncFunction("The json data")
}
}
func parseNSync2(jsonDictionary: String) {
print("Parsed the data: \(jsonDictionary)")
}
fetchParseNSyncJson2(parseNSyncFunction: parseNSync2(jsonDictionary:))
上面的代码工作正常,但我想向 parseNSync2 函数添加另一个参数来转义闭包块,就像这样
func parseNSync2(jsonDictionary: String, done: @escaping(Bool)->Void {
print("Parsed the data: \(jsonDictionary)")
}
然后我想像上面那样在 fetchParseNSyncJson2 函数中传递这个新函数(带有转义块)我该怎么做??
这是我尝试过的(注意:下面的代码包含错误)
func fetchParseNSyncJson(parseNSyncFunction: (json: String, done: (Bool)->Void)) {
if 200 == 200 {
print("got the json")
parseNSyncFunction(json: "json data", done: (_:)) // how should i pass parameter here??
}
}
func parseNSync(_ jsonDictionary: String, done: @escaping (Bool)->Void) {
print("Parsed: \(jsonDictionary)")
}
fetchParseNSyncJson(parseNSyncFunction: parseNSync(json:, done: { done in // how to i pass parameter here
if done {
print("Done")
}
}))
【问题讨论】:
-
不清楚你在问什么。你想传递什么参数?也许您可以重写您的问题以使用更简单和更独特的函数名称。正如所写的那样,很难理解。由于闭包正在转义,因此您无法避免转义参数。
-
好的,我该如何通过呢?
-
通过什么?我无法理解您的问题是什么
-
传递转义参数即:done, func parseNSync2(jsonDictionary: String, done: @escaping(Bool)->Void { print("Parsed the data: (jsonDictionary)") } 我想在 fetchParseNSyncJson2 函数中传递这个。请检查示例代码。
-
重复同样的事情没有帮助。什么参数?
done关闭?它只是称为done。你的意思是done(true)?
标签: ios swift function escaping closures