Swift Eureka - пользовательская строка не может быть преобразована в ожидаемый тип аргумента BaseRow

Как и многие другие, я хочу реализовать собственную строку в Eureka.

Так что я следил за учебным пособием и даже просмотрел некоторые примеры, предоставленные сообществом Eureka.

Это мой код:

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, которая дает некоторые советы, которым я уже следую. И я посмотрел на это, это официальный пример. Я в основном просто записал, что они сделали, и все же это не работает.

Почему?

Единственная разница, которую я вижу, заключается в том, что они пишут отдельный тип подчеркивания для Row<MyCustomCell> и делают там некоторые вещи, которые я не понимаю. Я не понимаю, зачем это нужно, если официальная документация на их github говорит, что этого достаточно, чтобы создать подкласс и принять Row<MyCustomCell> и RowType.


person Community    schedule 28.11.2016    source источник


Ответы (1)


Я думаю, ваша ошибка в том, что вы должны заменить EditorTextCell на EditorTextRow в своем коде:

form.last! <<< EditorTextRow()
person Mathias Claassen    schedule 15.02.2017