DA
Size: a a a
DA
DK
S
DK
AB
DK
AB
DK
AB
S
SL
S
RR
S
SL
ᅠᅠ
ᅠᅠ
KS
SL
ᅠᅠ
NetworkManager.shared.getCurrentCurrency {
(networkValue)
in
guard
let currentValue = networkValue.usd_byn
else {
return }
CoreDataHelper.shared.fetchValue {
(valueDb, dateDb)
in
if CoreDataHelper.shared.isExpired(date: dateDb) ==
true {
CoreDataHelper.shared.saveValue(value: currentValue)
}
else {
CoreDataHelper.shared.fetchValue {
(notExpiredValue, currentDate)
in
self.data = notExpiredValue
}
}
}
}
}
fetchValue(completion:
@escaping@escaping (
_ usd_byn: Double,
_ date: Date) -> Void) {
let request: NSFetchRequest<Rate> = Rate.fetchRequest()
let idToSearch = "usd_byn"
print(request)
request.predicate = NSPredicate(format: "id == %@", idToSearch)
do {
let rates =
try context.fetch(request)
print(rates)
if
let rate = rates.first {
print(rate)
guard
let lastUpdate = rate.lastUpdate
else {
return }
completion(rate.value, lastUpdate)
}
}
catch {
print("Unresolved errror \(error), \(error.localizedDescription)")
}
}
func saveValue(value: Double ) {
let request: NSFetchRequest<Rate> = Rate.fetchRequest()
let idToSearch = "usd_byn"
request.predicate = NSPredicate(format: "id == %@", idToSearch)
do {
let rates =
try context.fetch(request)
if
let rate = rates.first {
rate.value = value
rate.lastUpdate = Date()
try context.save()
}
else {
let rate = NSEntityDescription.insertNewObject(forEntityName: "Rate", into: context)
as! Rate
rate.value = value
rate.lastUpdate = Date()
rate.id = idToSearch
try?
self.context.save()
}
}
catch {
print("Unresolved errror \(error), \(error.localizedDescription)")
}
}