【问题标题】:Changing old C for loop to new Swift loop将旧的 C for 循环更改为新的 Swift 循环
【发布时间】:2017-02-09 18:51:57
【问题描述】:

我有一个旧的 Xcode 7.3 Swift 2 代码。我需要将这两个 for 循环更改为新的 swift 3 for 循环语法。

fileprivate func collapseSubItemsAtIndex(_ index : Int) {

    var indexPaths = [IndexPath]()
    let parent = self.findParent(index)
    checkCurrentLanguage()

    if lang.isEqual(to: "en")
    {
        //For loop 1
        for (var i = index + 1; i <= index + self.engsubItems[parent].count; i += 1 ){
            indexPaths.append(IndexPath(row: i, section: 0))
        }
        self.engtableview.deleteRows(at: indexPaths, with: UITableViewRowAnimation.fade)
        self.engtotal  -= self.engsubItems[parent].count

    }
    else{
        //For loop 2
        for (var i = index + 1; i <= index + self.subItems[parent].count; i += 1 ){
            indexPaths.append(IndexPath(row: i, section: 0))
        }
        self.tableView.deleteRows(at: indexPaths, with: UITableViewRowAnimation.fade)
        self.total  -= self.subItems[parent].count

    }
}

【问题讨论】:

  • 为什么不简单地lang == "en"
  • @Sulthan 我刚刚收到此代码,他们需要将其全部更新为 swift 3。我仍然没有修复或改进许多编码错误。

标签: arrays swift loops for-loop


【解决方案1】:
let count = self.engsubItems[parent].count

let rowsToDelete = ((index + 1) ... (index + count))
     .map { IndexPath(row: $0, section: 0) }
self.engtableview.deleteRows(at: rowsToDelete, with: UITableViewRowAnimation.fade)
self.engtotal -= count

【讨论】:

    【解决方案2】:
    for i in (index+1)...(index + self.engsubItems[parent].count) {
        ...
    }
    for i in (index+1)...(index + self.subItems[parent].count) {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2018-08-13
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多