Не удается просмотреть данные Firebase в виде таблицы Swift 4 - PullRequest
0 голосов
/ 07 декабря 2018

У меня проблема с тем, что я не могу просмотреть что-либо, что я пишу в свою базу данных Firebase в моем табличном представлении.Раньше у меня был некоторый рабочий код для просмотра записей в моей базе данных, но мне пришлось пересмотреть порядок записи данных в базу данных, чтобы я мог сохранить уникальный идентификатор, сгенерированный функцией childByAutoID (), чтобы я мог удалить запись позже.Вот мой код:

Вот как я пишу в Firebase:

ref = Database.database().reference() //  sets the variable "ref" to connect to our Firebase database
 let key = ref?.child("task").childByAutoId().key
            let post = ["uid": key,       // Gets auto generated ID for database entry
                        "title": input.text,                    // Saves the title field to Firebase
                        "description": inputField.text]         // Saves the description field to Firebase
            ref?.child("task").child(key!).setValue(post)      // Saves the task for Firebase, ties each post with a unique ID

            var arr : [(String, String)] = [];
            for (key, value) in post {
                arr.append((key, value!));

Вот мой TableViewController:

public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
    return (arr.count)
}


public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
    let cell = UITableViewCell(style: 
UITableViewCell.CellStyle.default, reuseIdentifier: "cell")

    let (key, value) = arr[indexPath.row]; //read element for the desired cell
    cell.textLabel?.text = key
    cell.detailTextLabel?.text = value
    return (cell)
}        
override func viewDidAppear(_ animated: Bool) {//change "viewDidLoad()" back to "viewDidAppear()"
    ref = Database.database().reference()                  // sets the variable "ref" to connect to our Firebase database

    list.removeAll()    // Deletes all older data, so only data thats on the Firebase Database will be added to the "list" array
    desc.removeAll()    // Deletes all older data, so only data thats on the Firebase Database will be added to the "desc" array

    handle = ref?.child("task").observe(.childAdded, with: { (snapshot) in

if let item = snapshot.value as? String
        {
            arr.append(item)
            list.append(item)
            //desc.removeAll()
            self.myTableView.reloadData()
        }
    })
   }

1 Ответ

0 голосов
/ 07 декабря 2018

Firebase возвращает элементы в виде NSArray или NSDictionary или NSString.( См. Здесь ) Поскольку ваш объект post имеет значение NSDictionary, проанализируйте значение снимка как массив словаря.попробуйте следующее:

if let itemArray = snapshot.value as? [[String : Any]] {

  // Looping logic on 'itemArray' to get your sent dictionaries on the firebase 
  // After looping logic add Ui logic out of loop
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...