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 выходит за границы.