From e99a857083775edc742642d88379b6553d6d8914 Mon Sep 17 00:00:00 2001 From: Selim Mustafaev Date: Wed, 30 Sep 2020 22:31:46 +0300 Subject: [PATCH] Fix for removing audio records --- AutoCat/AppDelegate.swift | 2 +- AutoCat/Controllers/RecordsController.swift | 19 +++++++++---------- AutoCat/Models/AudioRecord.swift | 10 +++++++--- AutoCat/Models/Vehicle.swift | 5 ----- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/AutoCat/AppDelegate.swift b/AutoCat/AppDelegate.swift index 7fd141e..780df1c 100644 --- a/AutoCat/AppDelegate.swift +++ b/AutoCat/AppDelegate.swift @@ -24,7 +24,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let config = Realm.Configuration( - schemaVersion: 17, + schemaVersion: 18, migrationBlock: { migration, oldSchemaVersion in if oldSchemaVersion <= 3 { var numbers: [String] = [] diff --git a/AutoCat/Controllers/RecordsController.swift b/AutoCat/Controllers/RecordsController.swift index 49ef53f..7032b28 100644 --- a/AutoCat/Controllers/RecordsController.swift +++ b/AutoCat/Controllers/RecordsController.swift @@ -44,15 +44,6 @@ class RecordsController: UIViewController, UITableViewDelegate { return dataSourse.sectionModels[index].header } - self.tableView.rx - .modelDeleted(AudioRecord.self) - .subscribe(onNext: { record in - try? realm.write { - realm.delete(record) - } - }) - .disposed(by: self.bag) - DispatchQueue.main.async { Observable.collection(from: realm.objects(AudioRecord.self) .sorted(byKeyPath: "addedDate", ascending: false)) @@ -270,7 +261,15 @@ class RecordsController: UIViewController, UITableViewDelegate { action.image = UIImage(systemName: "ellipsis" /*"square.and.arrow.up"*/) let delete = UIContextualAction(style: .destructive, title: "Delete") { action, view, completion in - self.tableView.dataSource?.tableView!(self.tableView, commit: .delete, forRowAt: indexPath) + do { + if let realm = record.realm { + try realm.write { + realm.delete(record) + } + } + } catch { + print(error) + } completion(true) } delete.image = UIImage(systemName: "trash") diff --git a/AutoCat/Models/AudioRecord.swift b/AutoCat/Models/AudioRecord.swift index a6c828e..1129610 100644 --- a/AutoCat/Models/AudioRecord.swift +++ b/AutoCat/Models/AudioRecord.swift @@ -7,7 +7,7 @@ class AudioRecord: Object, IdentifiableType { @objc dynamic var path: String = "" @objc dynamic var number: String? @objc dynamic var rawText: String = "" - @objc private dynamic var addedDate: TimeInterval = Date().timeIntervalSince1970 + @objc private dynamic var addedDate: TimeInterval = 0 @objc dynamic var duration: TimeInterval = 0 @objc dynamic var event: VehicleEvent? @@ -25,11 +25,14 @@ class AudioRecord: Object, IdentifiableType { self.duration = duration self.rawText = raw self.event = event + self.addedDate = Date().timeIntervalSince1970 } required init() { - super.init() - self.identifier = self.addedDate + } + + override static func primaryKey() -> String? { + return "path" } override class func ignoredProperties() -> [String] { @@ -39,6 +42,7 @@ class AudioRecord: Object, IdentifiableType { func getAddedDate() -> TimeInterval { if self.identifier == 0 { self.identifier = self.addedDate + print("getAddedDate: \(self.identifier)") } return self.addedDate diff --git a/AutoCat/Models/Vehicle.swift b/AutoCat/Models/Vehicle.swift index c7c1d64..1f8f7ca 100644 --- a/AutoCat/Models/Vehicle.swift +++ b/AutoCat/Models/Vehicle.swift @@ -87,8 +87,6 @@ class Vehicle: Object, Decodable, IdentifiableType { let ownershipPeriods = List() let events = List() - //var identity: String { number } - var identifier: String = "" var identity: String { if self.identifier.isEmpty { @@ -150,18 +148,15 @@ class Vehicle: Object, Decodable, IdentifiableType { self.events.append(objectsIn: eventsArray) } - print("Init from decoder - \(self.number)") self.identifier = self.number } required init() { super.init() - print("Init - \(self.number)") self.identifier = self.number } init(_ number: String) { - print("Init with number - \(number)") self.identifier = number self.number = number self.addedDate = Date().timeIntervalSince1970*1000