2016-10-22 2 views
0

У меня проблема с selectedRows() в SelectableSection.Eureka SelectableSection получить значение от выбранногоRows

Использование Xcode 8, Swift 3, 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({$0.value!}) 
} 

теперь у меня есть проблема с этой линией invoiceParams["branches"] = branch_section!.selectedRows().map({$0.value!})

карты»производит" [T], а не ожидаемый контекстный типа результата 'AnyObject?

Что проблема? Это работало с предыдущими версиями на swift 2.3.

ответ

1

Насколько я могу видеть из SelectableSection.swiftselectedRows возвращает массив SelectableRow пунктов:

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

Так функция map также возвращает массив.

Ваш invoiceParams, кажется, словарь, который ожидает AnyObject? как ценность.

Вы можете попытаться изменить объявление invoiceParams на что-то вроде var invoiceParams: [String: [Any]] = [:].

Поскольку я не знаю Eureka, это всего лишь догадка. Но я надеюсь, что это все еще немного помогает.

+0

На самом деле декларация должна быть: 'var invoiceParams: [String: Any] = [:]' но ваш ответ правильный .. спасибо .. –

Смежные вопросы