Swift 3:致命错误:不能用upperBound<形成Range下界

时间:2017-06-23 07:20:02

标签: ios swift class for-in-loop

我有一个类,我想用for循环添加值。

这是我的班级:

public class Expandable {
    public var name: String
    public var id:Int

    init(name: String, id:Int) {
        self.name = name
        self.id = id
    }

我可以手动添加:

let a = [Expandable(name:"aaa", id: 12)]

但是当我尝试使用for循环时,它根本不起作用。

    for allin in items{
       sidebarMenuItem?.append(Expandable(name: allin["Code"] as! String, id: allin["Id"] as! Int))
                }

Items数据效果很好,但是sidebarMenuItem在打印时会获得Optional(MyProjectName.Expandable)值。我是新上课的。那么你可以帮我解决这个问题吗?

更新:

我意识到我很好地获取了数据,但是我在expandCell函数中收到错误:

  

致命错误:无法使用upperBound<形成Range下界

我的expandCell功能:

private func expandCell(tableView: UITableView, index: Int) {
    // Expand Cell (add ExpansionCells
    if let expansions = sideBarData?[index]?.expandable {
        for i in 1...expansions.count {
            sideBarData?.insert(nil, at: index + i)
            tableView.insertRows(at: [NSIndexPath(row: index + i, section: 0) as IndexPath] , with: .top)
        }
    }
}

5 个答案:

答案 0 :(得分:1)

sidebarMenuItem是可选的,因为您已声明它是可选的。试试这个。

var sidebarMenuItem = [Expandable]()

for allin in items{
    sidebarMenuItem.append(Expandable(name: allin["Code"] as! String, id: allin["Id"] as! Int))
}

答案 1 :(得分:0)

我不确定你的扩展结构如何。但是我猜测某些单元格可能是你的扩展计数为0.这就是为什么当你的起始索引为1且结束索引为0时它会给出这个错误。

答案 2 :(得分:0)

试试这个:

  private func expandCell(tableView: UITableView, index: Int) {
        // Expand Cell (add ExpansionCells
        if let expansions = sideBarData?[index]?.expandable {
            //0 because your first item starts at 0
            for i in 0...expansions.count {
                sideBarData?.insert(nil, at: index + i)
                tableView.insertRows(at: [NSIndexPath(row: index + i, section: 0) as IndexPath] , with: .top)
            }
        }
    }

答案 3 :(得分:0)

f(){
    new test();
  }

答案 4 :(得分:0)

SWIIFT 4

要形成从上边界到下边界的范围,请使用stride,如本文档页面所示: Generic Function stride(from:to:by:)

for i in stride(from: 10, through: 5, by: -1) { print(i) }

,如果要包含LowerBound,请大步走过: Generic Function stride(from:through:by:)