Swift - 错误"不能下标' [String:DayData]'指数为tye' Int'

时间:2016-09-09 06:02:21

标签: swift uitableview

所以我试图创建一个表视图,该视图将从我已经在不同视图控制器中编写的源中获取信息。当我尝试将信息拉入表格视图的单元格时,我遇到了一些麻烦。

我收到错误"无法下标' [String:DayData]'指数为tye' Int'"在以" var开头的行上(日期,销售,门锁定......"

我不确定如何解决这个问题。任何人都可以搞清楚吗?谢谢!

import Foundation
import UIKit


var allInformationByDate = [
"2016-08-13": DayData(sales: 0, doorsKnocked: 0, milesWalked: 0.00, hoursWorked: 0.00)
]

struct DayData { 
let sales: Int
let doorsKnocked: Int
let milesWalked: Double
let hoursWorked: Double
}

class historyViewController: UIViewController, UITableViewDataSource {

//return Int, how many sections in table
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

//return Int, how many rows in table
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return allInformationByDate.count
}

//what are the contents of each cell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = UITableViewCell()

    var (date, sales, doorsKnocked, milesWalked, hoursWorked) = allInformationByDate[indexPath.row]

    return cell
}

    override func viewDidLoad() {
        super.viewDidLoad()

    }

}

1 个答案:

答案 0 :(得分:2)

您的allInformationByDate词典,其中包含 未指定顺序中的键和值,并且无法使用 整数下标。

您应该创建一个数组,其中包含所需顺序的日期。在你的情况下

let sortedDates = allInformationByDate.keys.sort()

会奏效。然后,您可以检索索引路径的数据

let date = sortedDates[indexPath.row]
let dayData = allInformationByDate[date]! // We _know_ that the dictionary value exists.