Ios 如何修复以下错误:“quot;对成员'的模糊引用;下标'&引用;这会出现在我的代码中吗?
我正在尝试使用字典函数Ios 如何修复以下错误:“quot;对成员'的模糊引用;下标'&引用;这会出现在我的代码中吗?,ios,swift,Ios,Swift,我正在尝试使用字典函数init(grouping:by:)对我的事件数组按事件\类别进行分组,该函数在groupedEventArray中初始化。 但是,当我试图访问TableView的数据源cellForRowAt中的let(category,events)=groupedEventArray[indexPath.row]时,它会导致一个错误:对成员“subscript”的引用不明确。 以下是我正在尝试的示例代码: var events = [Events]() var gr
init(grouping:by:)
对我的事件数组按事件\类别进行分组,该函数在groupedEventArray中初始化。
但是,当我试图访问TableView的数据源cellForRowAt中的let(category,events)=groupedEventArray[indexPath.row]
时,它会导致一个错误:对成员“subscript”的引用不明确。
以下是我正在尝试的示例代码:
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
}
将您的
groupedEventArray
声明为类型Dictionary
并使用事件类别类型访问它
let partyEvents = groupedEventArray["Party"]
在这里,由于您将
groupedEventArray
作为Any
的数组,因此无法将其下标指定给元组。要修复此错误,请将数组的类型更改为元组本身
即,
只要像这样换一行就行了
var groupedEventArray = [(String, [Events])]()
一切都保持不变。
事件
已更改为UIEvents
。您使用的是哪种swift版本?可能重复的请不要问重复的问题。
let partyEvents = groupedEventArray["Party"]
var groupedEventArray = [(String, [Events])]()