以一对一的关系插入数据 - 领域

Tun*_*nds 2 realm swift

因此,我正在尝试设置并预先填充数据库,以便在实际应用程序发布时供以后使用.

我遇到的问题是我无法插入创建关系的字段,字段只是空的.截图如下:

屏幕截图应该是字段为空 这些是我的数据模型

保存信息类型的数据模型是另一个对象的关键

class sourceRecentData: Object {

    // Name
    dynamic var sourceName: String = ""

    // Description
    dynamic var sourceDesc: String = ""

    // TypeID
    dynamic var type : sourceType?

    // Key
    dynamic var sourceKey: String = ""

    // Enabled
    dynamic var sourceEnabled: Bool = true

    // Unlocked
    dynamic var sourceUnlocked: Bool = false
}
Run Code Online (Sandbox Code Playgroud)

此对象中的id链接到上面的对象

class sourceType: Object {

    // NewsType
    dynamic var typeOfNews: String = ""


}
Run Code Online (Sandbox Code Playgroud)

我现在用来执行插入的方法只是虚拟数据

func createTopDB() {

    let recentData = sourceRecentData()


    let realm = try! Realm()

    recentData.sourceName = "dfdfd"
    recentData.sourceDesc = "fdfd"
    recentData.sourceKey = "fdfdf"
    recentData.sourceEnabled = true
    recentData.sourceUnlocked = false
    recentData.type?.typeOfNews = "fdfdfd"

    try! realm.write({ () -> Void in
        realm.add(recentData)

    })
}
Run Code Online (Sandbox Code Playgroud)

mar*_*ius 5

您需要首先使用相关对象初始化属性,然后才能在其上写入值.我建议在一个单独的变量中,如下所示,这样你就可以避免写一个可选的值(recentData.type?.typeOfNews = …):

let type = SourceType()
type.typeOfNews = "fdfdfd"
recentData.type = type
Run Code Online (Sandbox Code Playgroud)

您可以像这样查询对象:

let realm = try! Realm()
let objects = realm.objects(SourceRecentData).filter("type.id = 1")
Run Code Online (Sandbox Code Playgroud)

PS:我建议以大写字母开头命名你的类,因为这是Swift编程社区中的一般最佳实践,可以更容易区分类和变量.我在下面的示例代码中应用了它,以便于阅读,因为SO的语法高亮也依赖于该约定.