我有一组字符串,其中包含一些数据。 但是当我将数据从集合显示到tableView时,在cellForRowAtIndexPath方法中它给出了上述错误。 这是我的代码:
var tradeSet: Set<String> = ["TKAI", "YNDX", "PSTG"]
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MyTrade", forIndexPath: indexPath) as! MyTradeTableViewCell
let objects = tradeSet[indexPath.row]
cell.tradeName.text = objects
return cell
}
任何帮助都会很棒。谢谢!
答案 0 :(得分:1)
集合不是可索引,因为列出集合元素的顺序无关紧要。您应该将元素存储在数组或不同的数据结构中。你可以像下面那样快速做一些事情(不推荐):
var tradeSet: Set<String> = ["TKAI", "YNDX", "PSTG"]
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MyTrade", forIndexPath: indexPath) as! MyTradeTableViewCell
// This is not the best data structure for this job tho
for (index, element) in tradeSet.enumerated() {
if row == index {
cell.tradeName.text = element
}
}
return cell
}
这种情况表明数据结构/算法不正确。
答案 1 :(得分:0)
您需要将Set转换为满足您要求的数组。 要将集合转换为数组,
var tradeSet: Set<String> = ["TKAI", "YNDX", "PSTG"]
let stringArray = Array(tradeSet)
答案 2 :(得分:0)
您可以使用2种方式:
Array(tradeSet)[indexPath.row]
tradeSet.enumerated()。first {(index,value)in index == indexPath.row} !. element