【问题标题】:Deleting Objects with subclasses in Swift Realm在 Swift Realm 中删除带有子类的对象
【发布时间】:2020-03-31 17:12:20
【问题描述】:

我在 Swift Realm 中有一个非常简单的数据库用于待办事项应用程序:

项目及其父类别。

用户可以通过简单的滑动操作来删除项目和类别。该操作工作正常,删除项目时没有问题。如果我删除一个类别,这也可以,但我仍然可以在领域浏览器中看到项目,即使不再有父项,这些项目仍保留在数据库中。显然用户看不到这些,他们什么也没做,但最好用父类别摆脱这些。有什么简单的方法可以做到这一点?

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()
}

【问题讨论】:

  • 我觉得应该是realm.delete(categoryForDeletion.items)

标签: swift database realm


【解决方案1】:

你只需先删除items

self.realm.delete(categoryForDeletion.items)
self.realm.delete(categoryForDeletion)

或者,使用this extension,您可以这样做。

self.realm.delete(categoryForDeletion, cascading: true)

【讨论】:

  • 谢谢!觉得自己有点傻,超级简单,不知道我是怎么忽略这个的......
猜你喜欢
  • 2017-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多