Загрузка данных массива в табличное представление - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть настройка базы данных Firebase, в которой я возвращаю несколько ключей, которые мне нужны. Я хочу, чтобы эти ключи были заголовком строки таблицы. Когда я запускаю следующий код, он возвращает именно то, что я хочу в массиве (в этом примере [Афины, Делавэр]). Я загружаю этот массив из представления сделал метод загрузки.

Как я могу получить каждый элемент в массиве как строку ячейки в моем 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 Ответ

1 голос
/ 01 апреля 2019

Эта ошибка возникает из-за того, что код (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()
        })


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...