Ios Swift-在表视图上打印数组

Ios Swift-在表视图上打印数组,ios,swift,uitableview,Ios,Swift,Uitableview,我是Swift新手,目前正在尝试在表视图中打印数组。代码工作正常,但它是升序打印的(第一个单元格是索引0)。是否有方法按降序打印(第一个单元格应为最后一个索引) 如果我错了,请纠正我,但我认为这是负责该表的代码: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let gefahren = gefahreneKm[indexPat

我是Swift新手,目前正在尝试在表视图中打印数组。代码工作正常,但它是升序打印的(第一个单元格是索引0)。是否有方法按降序打印(第一个单元格应为最后一个索引)

如果我错了,请纠正我,但我认为这是负责该表的代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let gefahren = gefahreneKm[indexPath.row]
        let dateFinal = date[indexPath.row]

        let cell = tableView.dequeueReusableCell(withIdentifier: "TimelineCell") as! TimelineCell

        cell.setDrivenKm(gefahreneKm: gefahren)
        cell.setDate(date: dateFinal)

        return cell
    }

这不一定是最有效的方法,但在没有看到其余代码的情况下,它应该会为您带来成功:

let gefahreneKmIndex = gefahreneKm.count - 1 - indexPath.row
let dateFinalIndex = date.count - 1 - indexPath.row

let gefahren - gefahreneKm[gefahreneKmIndex]
let dateFinal = date[dateFinalIndex]

或者,您可以忘记上面包含的代码,只要使用Swift的内置
reversed()
方法在设置数组内容的任何位置反转数组即可。以下是一个基本示例:

let arr = Array([0, 1 ,2 ,3].reversed()) // This will be ordered as [3, 2, 1, 0]

您可能不想在
func tableView(u tableView:UITableView,cellForRowAt indexath:indexPath)->UITableView cell{…}
中执行此操作,因为它经常被调用。这样做效率极低。

您可以使用阵列的
反转版本

let gefahren = gefahreneKm.reversed()[indexPath.row]
let dateFinal = date.reversed()[indexPath.row]
func gefahren(at indexPath: IndexPath) -> Gefahren {
    return gefahreneKm.reversed()[indexPath.row]
}
不过,我不一定推荐这样做。您可能应该在第一次创建阵列时将其反转。或者创建一个helper函数,通过索引路径获取值,这样您就不会忘记在某个时候反转数组

let gefahren = gefahreneKm.reversed()[indexPath.row]
let dateFinal = date.reversed()[indexPath.row]
func gefahren(at indexPath: IndexPath) -> Gefahren {
    return gefahreneKm.reversed()[indexPath.row]
}

缺点是在此上下文中,
reversed()
实际上会创建一个新的反向数组,而不是返回
ReversedCollection
(因为它不能被
Int
索引),因此性能会很差。最好从一开始就反转。

对用于数据源的数组进行排序。@rmaddy请在下面的回答中加以说明?数组由用户输入动态更新。请不要使用解决方案编辑您的问题。谢谢!我已经在最初的问题中添加了我的工作代码。在加载或更新数组时对数组进行一次排序,而不是每次访问都进行排序。另外,你把逻辑放在了不该放的地方。如果用户可以选择表视图的顺序,该怎么办?在每次访问中添加
反向
,效率低下,会妨碍灵活性。感谢您的帮助!我已经在最初的问题中添加了我的工作代码——关于效率——我的方法可以接受吗?