У меня действительно простая база данных в Swift Realm для приложения todo:
Элементы и их родительские категории.
Пользователь может удалить как элементы, так и категории с помощью простого действия смахивания , Действие работает отлично, проблем с удалением нет. Если я удаляю категорию, это тоже работает, но я все равно вижу элементы в обозревателе областей, они остаются в базе данных, даже если родительских элементов больше нет. Очевидно, что пользователь не может видеть их, они ничего не делают, но все же, было бы лучше избавиться от них с родительской категорией. Есть ли простые способы сделать это?
class Category: Object{
@objc dynamic var name: String = ""
@objc dynamic var color: String = ""
@objc dynamic var order = 0
let items = List<Item>()
override static func primaryKey() -> String? {
return "order"
}
static func incrementalIDCat() -> Int {
let realm = try! Realm()
return (realm.objects(Category.self).max(ofProperty: "order") as Int? ?? 0) + 1
}
}
class Item: Object {
@objc dynamic var title: String = ""
@objc dynamic var done: Bool = false
@objc dynamic var dateCreated: Date?
@objc dynamic var order = 0
var parentCategory = LinkingObjects(fromType: Category.self, property: "items")
override static func primaryKey() -> String? {
return "order"
}
static func incrementalIDItem() -> Int {
let realm = try! Realm()
return (realm.objects(Item.self).max(ofProperty: "order") as Int? ?? 0) + 1
}
}
override func updateModel(at indexPath: IndexPath) {
if let categoryForDeletion = self.categories?[indexPath.row] {
do {
try self.realm.write {
self.realm.delete(categoryForDeletion)
}
} catch {
print("Error deleting category, \(error)")
}
}
tableView.reloadData()
}