gpt4 book ai didi

ios - 在类型中找不到枚举大小写开关

转载 作者:IT王子 更新时间:2023-10-29 05:41:32 24 4
gpt4 key购买 nike

有人可以帮我解决这个问题吗?

我有以下 public enum

public enum OfferViewRow {
case Candidates
case Expiration
case Description
case Timing
case Money
case Payment

}

以及以下可变属性:

private let rows = MutableProperty<[OfferViewRow]>([OfferViewRow]())

在我的初始化文件中,我使用了一些 reactiveCocoa 来设置我的 MutableProperty:

rows <~ application.producer
.map { response in
if response?.application.status == .Applied {
return [.Candidates, .Description, .Timing, .Money, .Payment]
} else {
return [.Candidates, .Expiration, .Description, .Timing, .Money, .Payment]
}
}

但现在的问题是,当我尝试在我的行中获取我的枚举值时,它会抛出错误。请看下面的代码。

 func cellViewModelForRowAtIndexPath(indexPath: NSIndexPath) -> ViewModel {
guard
let row = rows.value[indexPath.row],
let response = self.application.value
else {
fatalError("")
}

switch row {
case .Candidates:
// Do something
case .Expiration:
// Do something
case .Description:
// Do something
case .Timing:
// Do something
case .Money:
// Do something
case .Payment:
// Do something
}
}

它抛出一个错误:Enum case 'some' not found in type 'OfferViewRow在线let row = rows.value[indexPath.row]

并且在它抛出的每个 switch 语句上:Enum case 'Candidates' not found in type '<<Error type>>

有人可以帮我解决这个问题吗?

最佳答案

guard 语句需要一个可选的,如错误消息中的“Enum case 'some'”所暗示的那样。

但是rows.value[indexPath.row]不是 Optional<OfferViewRow> , 它是原始的 OfferViewRow .所以它不会进入保护语句。

移动let row = rows.value[indexPath.row]一条线:Swift 负责边界检查,如果 indexPath.row 超出范围就会崩溃。

关于ios - 在类型中找不到枚举大小写开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com