我正在尝试使用。在属性为可选的数组上排序,得到以下错误:
对成员“+”的不明确引用
我不知道如何处理这里的可选,并补充!强制展开不起作用(我确信在运行此代码时数组将有一个值)。

let sortedoptions = decisions[selectedDecision].options.sorted(by: { $0.ratings.reduce(0, +) < $1.ratings.reduce(0, +) } )

选项类:
struct Option: Codable {
    var title: String
    var ratings: [Int?]
}

有人知道怎么解决这个问题吗?

最佳答案

这个可以通过
let sortedoptions = decisions[selectedDecision].options.sorted(by: { $0.ratings.reduce(0, {x,y in x + y!}) < $1.ratings.reduce(0, {x,y in x + y!})} )
这是因为正如错误所说,不能对两个Int?类型执行加法。
另外,这是假设数组值永远不会为零
更安全的选择是将y!替换为y ?? 0

关于arrays - Swift:在 optional 项上使用.sorted时,对成员'+'的引用不明确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57438233/

10-10 03:54