【问题标题】:Creating a realm record with a linked property使用链接属性创建领域记录
【发布时间】:2015-10-14 00:10:01
【问题描述】:

我刚从领域开始,我认为我已经正确创建了两个对象。一个 ColourCategory 可以有许多 PaletteColour 类型的对象

class PaletteColour: Object {
    dynamic var name = ""
    dynamic var category: ColorCategory?
}

class ColourCategory: Object {
    dynamic var name = ""
    let paletteColours = List<PaletteColour>()
}

我已经创建了许多类别,只是通过使用名称来创建它们。 现在,我想添加颜色,并且 PaletteColour 的属性之一是它必须具有按名称指向类别对象的链接。

我被困在如何使用我的类别名称之一创建 PaletteColour 对象。

我从这个开始

let realm = try! Realm()
newColour = PaletteColour()
newColour.name = "Red"
// This is where I am stuck
// How do I add a category property that has a name of "Test Category" and linked to the ColourCategory object
newColour.category = ????????????
realm.write {
  realm.add(newColour)
}

我确信这很简单,因此我们将不胜感激。

【问题讨论】:

    标签: realm


    【解决方案1】:

    您可以创建ColourCategory 实例并分配给category 属性以链接颜色和类别对象。

    // Create category object named "Test Category"
    let category = ColourCategory()
    category.name = "Test Category"
    // then, assign to `category` propety
    newColour.category = category;
    
    realm.write {
        realm.add(newColour)
    }
    

    您还可以对palleteColours 属性使用“反向链接”机制。如果使用“反向链接”,则无需管理 paletteColours 的反向关系。

    class ColourCategory: Object {
        dynamic var name = ""
        var paletteColours: [PaletteColour] {
            return linkingObjects(PaletteColour.self, forProperty: "category")
        }
    }
    

    【讨论】:

    • 这似乎不起作用我得到两个 PaletteColour 条目,但没有关联的 ColorCategory。见Image
    • @StewartLynch 你是怎么检查的?如果您使用调试器检查日期,则调试器不会正确显示 Realm 对象,因为 Realm 对象是延迟加载的。
    • 我刚刚在 Realm Browser 中打开了数据库,所以我不确定你在问什么。我上一条评论中的那张图片是 Realm Browser 中两个表的快照。我有点沮丧。我习惯于使用关系数据库,所以我很想解决这个问题。我真的希望 Swift 中有一个工作示例,展示如何在两个表的关系类型数据库中添加、修改和删除记录。领域网站上的示例显示了狗和人,但我找不到显示如何查询、更新或修改记录的示例代码。
    • 该代码应该可以工作。您能否确保将类别对象分配给颜色的类别属性?
    • 当我这样做时,我会在 ColorCategory 表中添加一个新的“测试类别”条目,因此它不会链接到已经存在的条目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多