我有一个如下变量
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调用中的。这是正确的方法吗?
答案 0 :(得分:1)
尝试使用以下方法安全地展开您的价值:
// If there is a selected button.
if let selectedRating = faces
.map({ $0.face })
.filter({ $0.isSelected })
.first?.icon.rawValue {
print(selectedRating)
}