Swift Eureka SelectableSection baseValue не работает правильно

У меня есть этот код для Eureka библиотека:

    let section = SelectableSection<ImageCheckRow<String>, String>("Section:", selectionType: .MultipleSelection)
    section.tag = "section"
    for obj in arrList {
        section <<< ImageCheckRow<String>(obj.name){ row in
            row.title = obj.name
            row.selectableValue = obj.name
            row.baseValue = obj.id
            row.value = nil
        }
    }

это показывает список выбора, но следующий код не работает должным образом:

@IBAction func saveAction(sender: AnyObject) {
    let section = self.form.sectionByTag("section") as? SelectableSection<ImageCheckRow<String>, String>
    for obj in section!.selectedRows() {
        print(obj.baseValue)
    }
}

это печатает name поле, но нужно распечатать id(row.baseValue = obj.id).

Я делаю что-то здесь не так?

1 ответ

Решение

Я просматривал ваш код и обнаружил, что если мы используем SelectableSection нам нужно использовать selectableValue вместо baseValue для наших предложений, но я думаю, что это ошибка от Eureka так как selectableValue а также baseValue одинаковы, хотя мы устанавливаем разные значения

Вы можете смягчить это, используя row.selectableValue = obj.id вместо row.selectableValue = obj.name

отредактированный

попробуйте это для Int значения в selectableValue замещать

<ImageCheckRow<String>, String> за <ImageCheckRow<Int>, Int>

также заменить section <<< ImageCheckRow<String>(obj.name) за section <<< ImageCheckRow<Int>(obj.name)

и, наконец, настройте saveAction, как я

@IBAction func saveAction(sender: AnyObject) {
    let section = self.form.sectionByTag("section") as? SelectableSection<ImageCheckRow<Int>, Int>
    for obj in section!.selectedRows() {
        print(obj.baseValue)
    }
}

это работает для меня с Int на selectableValue

Проблема в том

public final class ImageCheckRow<T: Equatable>: Row<T, ImageCheckCell<T>>, SelectableRowType, RowType {
    public var selectableValue: T?
    required public init(tag: String?) {
        super.init(tag: tag)
        displayValueFor = nil
    }
}

selectableValue имеет тип шаблон для любого типа, который вы передаете в объявлении, поэтому <ImageCheckRow<Int>, Int> решить проблему с Int

Я надеюсь, что это поможет вам, с уважением

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