如何更改枚举的特定关联值
enum Origin {
case search(searchTerm: String, filtered: Bool)
case category(categoryName:String, subcategoryName:String)
}
@objc class GameSession: NSObject
{
var gameOrigin: Origin?
...
@objc func setIsSearchFiltered(filtered:Bool)
{
if (<gameOrigin is of type .search?>)
{
self.gameOrigin = <change "filtered" associated value to new value>
}
}
....
}
This question with answer,很不幸,最近对我没有帮助。
答案 0 :(得分:3)
您只能为变量分配一个新的枚举值。 与Can I change the Associated values of a enum?中一样, 当前值的关联值可以在switch语句中检索, 带有将相关值绑定到局部变量的案例模式。
不需要当前关联的filtered
值,因此
我们可以在该位置使用通配符模式_
。
由于var gameOrigin: Origin?
是可选的,因此我们需要带有尾随问号的“可选模式”。
switch gameOrigin {
case .search(let searchTerm, _)?:
gameOrigin = .search(searchTerm: searchTerm, filtered: filtered)
default:
break
}
在带有case
和模式的if语句中也可以这样做
匹配:
if case .search(let searchTerm, _)? = gameOrigin {
gameOrigin = .search(searchTerm: searchTerm, filtered: filtered)
}