所以我正在尝试设置并预先填充数据库,以便以后在实际应用程序发布时使用。
我遇到的问题是我无法插入创建关系的字段,字段只是空的。屏幕截图如下:
保存信息类型的数据模型是另一个对象的关键
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
}
此对象中的ID链接到上面的对象
class sourceType: Object {
// NewsType
dynamic var typeOfNews: String = ""
}
我现在用来执行插入的方法只是虚拟数据
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)
})
}
答案 0 :(得分:5)
您需要首先使用相关对象初始化属性,然后才能在其上写入值。我建议使用如下所示的单独变量,这样就可以避免写入可选值(recentData.type?.typeOfNews = …
):
let type = SourceType()
type.typeOfNews = "fdfdfd"
recentData.type = type
您可以像这样查询对象:
let realm = try! Realm()
let objects = realm.objects(SourceRecentData).filter("type.id = 1")
PS:我建议以大写字母开头命名您的类,因为这是Swift编程社区中的一般最佳实践,可以更容易区分类和变量。我在下面的示例代码中应用了它,以便于阅读,因为SO的语法高亮也依赖于该约定。
答案 1 :(得分:1)
recentData.type?.typeOfNews = "fdfdfd"
不会是非操作吗?默认情况下它将是无“值”。
您需要创建sourceType
的实例,设置属性,然后将其分配给recentData.type
。