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



有人能帮我吗。

我有以下public enum

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

以及以下可变属性:

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

在我的init文件中,我使用一些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
        }
    }

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

在它抛出的每个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越界,它将崩溃。

最新更新