2016-11-28 45 views
1

正如許多人一樣,我想實現尤里卡一個自定義行「BaseRow不能轉換爲預期的參數類型」。斯威夫特尤里卡 - 自定義行

所以我跟着教程,甚至看看了尤里卡社區提供的一些例子。

這是我的代碼:

open class EditorTextCell: Cell<Field>, CellType { 
@IBOutlet weak var questionLabel: UILabel! 
@IBOutlet weak var questionField: UITextField! 
// TODO 
} 

行是:

public final class EditorTextRow: Row<EditorTextCell>, RowType { 
    required public init(tag: String?) { 
     super.init(tag: tag) 
     cellProvider = CellProvider<EditorTextCell>(nibName: "EditorTextCell") 
    } 
} 

我的數據結構是簡單的:

public class Field: Object { 
    dynamic var question = "" 
    dynamic var mandatory = false 
} 

據我瞭解,我需要一個數據結構來保存用戶交互後我的自定義行將保留/生成的數據。這個自定義數據結構是我的情況下的一個Realm對象,所以我想 - 爲什麼不重用它?之後,自定義數據結構應該被傳遞到我定義的自定義單元格的Cell<MyDataStructure>。自定義行只是加載我的筆尖,並聲明使用Row<MyCustomCell>的那個單元格。就這樣。正確?

我收到錯誤「無法將類型UITableViewCell的值轉換爲預期的參數類型BaseRow」在我試圖實例化我的自定義行像form.last! <<< EditorTextCell()的行上。

我閱讀官方文檔,它說: Custom rows need to subclass Row<CellType> and conform to RowType protocol. Custom cells need to subclass Cell<ValueType> and conform to CellType protocol. - 這是我正在做的。我還在stackoverflow上發現了link,這給出了我已經遵循的一些建議。我看了一下this,這是一個正式的例子。我基本上只是寫下他們做了什麼,但它不起作用。

爲什麼?

我看到的唯一區別是他們爲Row<MyCustomCell>寫了一個單獨的下劃線類型,並做了一些我不明白的東西。我不明白爲什麼這是必要的,如果他們的GitHub上的官方文件說,它足夠的子類,並採取Row<MyCustomCell>RowType

回答

1

,我認爲你的錯誤是,你必須在你的代碼EditorTextRow更換EditorTextCell

form.last! <<< EditorTextRow()