Enum case switch не найден в типе

Может кто-нибудь, пожалуйста, помогите мне с этим.

У меня есть следующее public enum

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

}

И следующий mutableProperty:

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

В моем файле инициализации я использую некоторый реактивный Cocoa для установки моего 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>>

Может кто-то помочь мне с этим?

1 ответ

Охранное заявление требует необязательного, как подсказано "Enum case 'some'" в сообщении об ошибке.

Но rows.value[indexPath.row] не является Optional<OfferViewRow>сырое OfferViewRow, Так что это не будет вводить охранное заявление.

Переехать let row = rows.value[indexPath.row] одна строка вверх: Swift заботится о проверке границ и вылетает, если indexPath.row выходит за границы.

Другие вопросы по тегам