将数组数据加载到表格视图中

时间:2019-03-31 22:50:48

标签: swift tableview

我有一个Firebase数据库设置,我已经返回了一些我想要的键。我希望这些键成为tableview行的标题。当我运行以下代码时,它将完全返回我想要的数组(在此示例中,[雅典,特拉华州])。我从视图加载方法中加载了此数组。

如何获取数组中的每个项目作为tableView中的单元格行?

当我尝试执行以下代码时,我得到此错误作为回报:

无法将类型'Swift.Array'(0x10c7ed2c0)的值强制转换为'Swift.String'(0x10c7d2888)。

let ref = Database.database().reference()

    var markets: [loadMyData] = []

    var myKey = [Any]()

    override func viewDidLoad() {
        super.viewDidLoad()



        ref.child("Markets").observeSingleEvent(of: .value, with: { (snapshot) in

            var myNewKey: [Any] = []

            let allMarkets = (snapshot.value as! NSMutableDictionary).allKeys
            myNewKey.append(allMarkets)
            self.myKey = myNewKey
            self.tableView.reloadData()
        })


    }

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return myKey.count

    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        let allMarkets = myKey[indexPath.row]

        cell.textLabel?.text = allMarkets as! String
        return cell
    }

1 个答案:

答案 0 :(得分:1)

发生此错误是因为代码(snapshot.value as! NSMutableDictionary).allKeys返回一个数组,并且您正在将该数组作为数组项添加到myKey!当然,您不能将数组强制转换为字符串。

尝试以下代码,看看会发生什么:

let ref = Database.database().reference()

    var markets: [loadMyData] = []

    var myKey = [Any]()

    override func viewDidLoad() {
        super.viewDidLoad()



        ref.child("Markets").observeSingleEvent(of: .value, with: { (snapshot) in

            var myNewKey: [Any] = []

            let allMarkets = (snapshot.value as! NSMutableDictionary).allKeys
            self.myKey = allMarkets
            self.tableView.reloadData()
        })


    }