Eureka SelectableSection 从 selectedRows 获取值

Eureka SelectableSection get value from selectedRows

我在 SelectableSection 中遇到 selectedRows() 的问题。

使用Xcode8,Swift3,Eureka 2.0.0-beta.1.

func viewDidLoad() {
    let branch_section = SelectableSection<ImageCheckRow<String>>("Branches", selectionType: .multipleSelection)
    branch_section.tag = "branch_section"
    for branch in branchList {
        let branchStr = String(branch.id)
        branch_section <<< ImageCheckRow<String>(branch.name){ row in
            row.title = branch.name
            row.selectableValue = branchStr
            row.value = nil
        }
    }
}


@IBAction func saveFilter(_ sender: AnyObject) {
    let branch_section = self.form.sectionBy(tag: "branch_section") as? SelectableSection<ImageCheckRow<String>>        
    invoiceParams["branches"] = branch_section!.selectedRows().map({[=10=].value!})
}

现在我对这条线有问题invoiceParams["branches"] = branch_section!.selectedRows().map({[=13=].value!})

map' produces '[T]', not the expected contextual result type 'AnyObject?'

这里有什么问题?这适用于 swift 2.3.

的早期版本

据我所知 SelectableSection.swift selectedRows returns SelectableRow 项数组:

public func selectedRows() -> [SelectableRow] {
    return filter({ (row: BaseRow) -> Bool in
        row is SelectableRow && row.baseValue != nil
    }).map({ [=10=] as! SelectableRow})
}

所以 map 函数也是 returns 一个数组。

您的 invoiceParams 似乎是一本期望 AnyObject? 作为值的字典。

您可以尝试将 invoiceParams 的声明更改为 var invoiceParams: [String: [Any]] = [:]

因为我不知道 Eureka 这只是一个猜测。但我希望它仍然有一点帮助。