Чтобы гарантировать, что последние значения параметров конфигурации приложения будут использоваться в моем приложении, я должен убедиться, что последние значения сначала записываются в UserDefaults.
Внутри моего didFinishLaunchingWithOptions
ЯВызов следующей функции
DataService.run.fetchLatestAppConfigSettings()
Моя fetchLatestAppConfigSettings()
функция:
func fetchLatestAppConfigSettings(){
REF_APPCONFIGSETTINGS.observeSingleEvent(of: .value, with: { (snapshot) in
let venueRadius = snapshot.childSnapshot(forPath: "venueRadius").value as! Double
self.defaults.set(venueRadius, forKey: VENUE_RADIUS)
let discoverRadius = snapshot.childSnapshot(forPath: "discoverRadius").value as! Double
self.defaults.set(discoverRadius, forKey: DISCOVER_RADIUS)
}) { (error) in
print("error \(error.localizedDescription)")
}
}//end func
В следующем VC используются значения из UserDefaults, но поскольку последнее значение не было записано ко времениследующий код выполняется значение всегда позади.
func fetchVenues(forLocation: CLLocation, handler: @escaping (_ venuesLoaded: Bool) -> ()){
//radius value passed is not the latest
DataService.run.getAllVenues(deviceLocation: forLocation, radius: DataService.run.venueRadius) { (venues) in
self.venueArray = venues
self.filteredVenueArray = venues
self.tableView.reloadData()
handler(true)
if self.filteredVenueArray.count == 0{
self.emptyStateLabel.isHidden = false
} else {
self.emptyStateLabel.isHidden = true
}
}//end func