首页 > 解决方案 > 如何修复以下错误:出现在我的代码中的“对成员'下标'的模糊引用”?

问题描述

我正在尝试使用在 groupedEventArray 中初始化的 Dictionary 函数按event_category对我的事件数组进行分组。但是当我尝试访问TableView 的数据源cellForRowAt时,会导致错误:对成员“下标”的模糊引用init(grouping:by:)let (category, events) = groupedEventArray[indexPath.row]

这是我正在尝试的示例代码:

    var events = [Events]()

    var groupedEventArray = [Any]()

    var testEvent1 = Events(id: 1, event_name: "PrototypeEvent", event_category: "Party", event_date: "10/06/19", event_img_url: "null")

    var testEvent2 = Events(id: 2, event_name: "PrototypeEvent2", event_category: "Music", event_date: "11/06/19", event_img_url: "null")

    override func viewDidLoad() {
        super.viewDidLoad()

        events.append(testEvent1)

        events.append(testEvent2)

        groupedEventArray = Dictionary(grouping: events) { $0.event_category }.compactMap({( $0.key, $0.value )})
        print(groupedEventArray)

    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return groupedEventArray.count
    }

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 245
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "PopularCell", for: indexPath) as! PopularCell
        let (category, events) = groupedEventArray[indexPath.row] // Error : Ambiguous reference to member 'subscript'

        return cell
    }

标签: iosswift

解决方案


声明你groupedEventArray的类型Dictionary<String, [Events]>

var groupedEventArray = Dictionary<String, [Events]>()

也放下compactMap

groupedEventArray = Dictionary(grouping: events) { $0.event_category }

并使用事件类别类型访问它

let partyEvents = groupedEventArray["Party"]

推荐阅读