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