Я не могу получить данные из базы данных Firebase как объект подкласса - PullRequest
0 голосов
/ 27 ноября 2018

Мои данные о базе данных:* Я могу прочитать код, дату и время начала из базы данных, но с данными предсказания объекта совпадения не приходит, он говорит, что его ноль, Как я могу получить эти данные с объектом сопоставления?

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете настроить класс Model следующим образом

class ListModel: NSObject {
var UID:String?
    var Code:String?
    var Date:String?
    var PredictionsArr:[PredictionsObj]?
    var StartTime:String?
}

class PredictionsObj : NSObject {
    var Prediction : String?
    var PredictionRatio : String?
}

В вашем ViewController вы можете добавить следующий код

    var ListArr = [ListModel]()

        let ref = Database.database().reference().child("Matches").child(“items”).child(“standard”)
        ref.observe(.childAdded, with: { (snapshot) in
            print(snapshot)
            guard let dictionary = snapshot.value as? [String : AnyObject] else {
                return
            }

            let Obj = ListModel()
            Obj.UID = snapshot.key
            Obj.Code = dictionary["code"] as? String
            Obj.Date = dictionary["date"] as? String
            Obj.StartTime = dictionary["startTime"] as? String

            let myPredictionsArr  = dictionary["predictions"] as? NSArray
            var myPredictionsObj = [PredictionsObj]()
            if myPredictionsArr != nil{
                for dict in myPredictionsArr as! [[String: AnyObject]]  {
                    let detail = PredictionsObj()
                    detail.Prediction = dict["prediction"] as? String
                    detail.PredictionRatio = dict["predictionRatio"] as? String
                    myPredictionsObj.append(detail)
                }
            }
            Obj.PredictionsArr = myPredictionsObj

            self.ListArr.append(Obj)
            self.ListTV.delegate = self
            self.ListTV.dataSource = self
            self.ListTV.reloadData()
        }, withCancel: nil)
...