【问题标题】:How to fix Contextual closure type '((String, JSON), (String, JSON)) -> Bool' expects 2 arguments, but 1 was used in closure body?如何修复上下文闭包类型 '((String, JSON), (String, JSON)) -> Bool' 需要 2 个参数,但在闭包体中使用了 1 个?
【发布时间】:2017-06-16 05:29:15
【问题描述】:

我正在将我的代码从 swift 3.2 转换为 swift 4,我收到此代码的错误

self.arrData = json.sorted{ $0.0.1["chkincount"].doubleValue > $0.1.1["chkincount"].doubleValue }.map { $0.1 }

上下文闭包类型 '((String, JSON), (String, JSON)) -> Bool' 需要 2 个参数,但在闭包主体中使用了 1 个

如何解决这个问题?

【问题讨论】:

标签: ios swift closures swift4


【解决方案1】:

在排序后的闭包中将$0.0.1 更改为$0.1 以访问第一个闭包参数,将$0.1.1$1.1 更改为在进行此更改后访问第二个闭包参数。

self.arrData = json.sorted{ $0.1["chkincount"].doubleValue > $1.1["chkincount"].doubleValue }.map { $0.1 }

【讨论】:

  • 你能解释一下为什么这段代码在 swift 4 及更高版本中不能工作吗?
  • @VarunNaharia 我已经在我的回答中写道,您没有在闭包中访问第二个参数$1,因此您需要访问它而不是$0.1,它是$1 $0$1 代表 (String, JSON) 而不是 ((String,JSON),(String,JSON))
  • @VarunNaharia 可能是他们在 Swift 4 中改变了这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多