2015-11-19 19 views
9

Ai đó có thể giúp tôi với điều này.Chuyển đổi trường hợp không được tìm thấy trong loại

Tôi có sau public enum

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

} 

Và mutableProperty sau:

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

Trong file init của tôi, tôi sử dụng một số reactiveCocoa thiết MutableProperty tôi:

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] 
     } 
} 

Nhưng bây giờ vấn đề, khi tôi cố gắng để có được giá trị của enum của tôi bên trong hàng của tôi t ném lỗi. Vui lòng xem mã bên dưới.

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 
     } 
    } 

Nó ném một lỗi: Enum case 'some' not found in type 'OfferViewRow trên dòng let row = rows.value[indexPath.row]

Và trên tất cả các chuyển đổi báo cáo nó ném: Enum case 'Candidates' not found in type '<<Error type>>

Có thể ai đó giúp tôi với điều này?

+0

bạn có thể thử 'phiếu mua hàng công khaiXemLàm thế nào: Int' như tuyên bố của enum –

+0

Không được trợ giúp, cũng đã thử! – Steaphann

+0

Loại 'hằng số' liên tục là gì? –

Trả lời

14

Câu lệnh bảo vệ muốn tùy chọn, như được gợi ý bằng "Trường hợp enum" một số '"trong thông báo lỗi.

Nhưng rows.value[indexPath.row] không phải là Optional<OfferViewRow>, nó là OfferViewRow. Vì vậy, nó sẽ không nhập một tuyên bố bảo vệ.

Di chuyển let row = rows.value[indexPath.row] một dòng lên: Swift kiểm tra các giới hạn kiểm tra và sẽ sụp đổ nếu indexPath.row vượt quá giới hạn.

Các vấn đề liên quan