Словарь только получает предыдущее значение, не обновленное новым значением - PullRequest
0 голосов
/ 03 января 2019

Когда я коснулся действительно, коснулся маркера, он дает мне текущий маркер, но когда добавляется новый маркер, он не добавляет его, он добавляет его после добавления нового ребенка.

  func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
        DispatchQueue.main.async(execute: {
            self.infoWindow.removeFromSuperview()
            self.locationMarker = nil
            self.locationMarker = marker
            var markerData: NSDictionary?
            if let data = marker.userData! as? NSDictionary {
                markerData = data
            }
            print(markerData as Any)

            self.infoWindow.markData = markerData
            self.infoWindow = self.loadNiB()
            if let keyData = markerData?["key"] {
                self.keyDataStored = keyData
                markerData = nil
            }
            guard let location = self.locationMarker?.position else {
                print("locationMarker is nil")
                return
            }

            self.infoWindow.center = mapView.projection.point(for: location)
            self.infoWindow.center.y = self.infoWindow.center.y - self.sizeForOffset(view: self.infoWindow)
            UIView.transition(with: self.view, duration: 0.25, options: [.transitionCrossDissolve], animations: {
                self.view.addSubview(self.infoWindow)
            }, completion: nil) 
        return false
    }

результат печати (markerData as Any) равен

Optional({
    Vote = 0;
    key = "-LVIje0829RH0EkwUuiz";
    latitude = "37.33233141";
    longitude = "-122.0312186";
})

для старого потомка

, но если я добавил нового потомка, давайте пометим его xchildрезультат будет

Optional({
    latitude = "37.49707671";
    longitude = "-122.31324792";
})

, если я снова добавлю нового потомка, скажем, это ychild, xchild будет обновлен и станет

Optional({
        Vote = 0;
        key = "-LVICnM6l5TMdsqkpP70";
        latitude = "37.49707671";
        longitude = "-122.31324792";
    })

, и ychild будет пропускать голосование и ключ додобавлен новый

...