我有一个类,我想用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)
}
}
}
答案 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:)