我有一个像下面这样的变量
let faces: [(face: Smiley, label: UILabel)] = [
(Smiley(icon: .worse), UILabel()),
(Smiley(icon: .bad), UILabel()),
(Smiley(icon: .ok), UILabel()),
(Smiley(icon: .good), UILabel()),
(Smiley(icon: .amazing), UILabel())
]
和
class Smiley: UIButton {
enum Icon: Int {
case worse = -2, bad = -1, ok = 0, good = 1, amazing = 2
}
}
我只想将面值传递给 API 调用,如果它被选中,所以我有以下代码
let selectedRating = faces
.map({ $0.face })
.filter({ $0.isSelected })
.first?.icon.rawValue ?? 1 // Using default value of 1
并且 selectedRating 被传递给 API 调用。但是现在情况发生了变化,即使不选择人脸也可以调用 API,因此不需要默认值 1。那我怎么能通过?
如果我尝试使用以下代码:-
let selectedRating = faces
.map({ $0.face })
.filter({ $0.isSelected })
.first?.icon.rawValue
我收到错误“可选类型'Int的值?' 没有打开;你是不是要使用“!” 或者 '?'?” 在 API 调用中传递 selectedRating。我该如何解决这个问题?
在 API 调用中,
让 sessionRating: Int
像上面一样声明,我现在改为
让 sessionRating: Int?
使通过
let selectedRating = faces
.map({ $0.face })
.filter({ $0.isSelected })
.first?.icon.rawValue ?? nil
在 API 调用中。这是正确的方法吗?