Я пытаюсь прочитать данные из firebase и нарисовать прямоугольники в соответствии с данными в firebase.Цвет также будет заполнен в соответствии со значением, полученным из базы данных.Мне удалось извлечь данные из базы данных и добавить их в массивы.
Поскольку Firebase асинхронный, я добавил обработчик завершения, чтобы запускать следующий код только после завершения readMarina ().Я пытаюсь проверить метод readMarina {} в draw (), введя простой чертеж прямоугольной рамки.Все работало гладко до context?.fill(lot)
, где выдавалось сообщение об ошибке:
"Поток 1: EXC_BAD_ACCESS (code = 1, address = 0x7ffe00000058)"
override func draw(_ rect: CGRect)
{
let context = UIGraphicsGetCurrentContext()
let lot = CGRect(x: 80,y: 20,width: 30,height: 60)
readMarina{
context?.addRect(lot)
context?.setFillColor(UIColor.red.cgColor)
context?.fill(lot)
}
}
func readMarina (_ completion: (() -> Void)?){
let ref = Database.database().reference()
let cpDB = ref.child("CarPark")
cpDB.child("MarinaSq").observe(.value, with: {snapshot in
let snapshotValue = snapshot.value as! Dictionary<String, AnyObject>
for (key, value) in snapshotValue
{
if (self.lot.count)<((snapshotValue.count)){
let v = value as! String
let k = key
self.lot.append(k)
self.status.append(v)
}
}
completion?()
})
}
Я пытался отлаживать, и когда я зависал над «контекстом» и «контекстом», все они показывали значение.Когда я нахожусь над «партией», в нем также анализируется значение. Что не так с моим кодом и почему мое прямоугольное окно не появилось в моем представлении?
Изображение сообщения об ошибке