我正在尝试使用在groupedEventArray中初始化的字典功能init(grouping:by:)
通过 event_category 对事件数组进行分组。
但是,当我尝试访问TableView数据源 cellForRowAt 中的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
}
答案 0 :(得分:1)
将您的groupedEventArray
声明为类型Dictionary<String, [Events]>
var groupedEventArray = Dictionary<String, [Events]>()
也放下compactMap
groupedEventArray = Dictionary(grouping: events) { $0.event_category }
并使用事件类别类型进行访问
let partyEvents = groupedEventArray["Party"]
答案 1 :(得分:0)
在这里,由于您将groupedEventArray
作为Any
的数组,因此无法将其下标分配给元组。要解决该错误,请将数组的类型更改为元组本身。
即, 只需像这样更改一行
var groupedEventArray = [(String, [Events])]()
一切保持不变。