插入具有一对一关系的数据 - 领域
Inserting data with one to one relationship - realm
所以我正在尝试设置并预填充一个数据库,以备实际应用程序发布时使用。
我遇到的问题是我无法插入到正在创建关系的字段中,该字段是空的。截图如下:
这些是我的数据模型
保存信息类型的数据模型是另一个对象的键
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)
})
}
会不会recentData.type?.typeOfNews = "fdfdfd"
不做手术?默认情况下它将是 None "value"。
您需要创建 sourceType
的实例,设置 属性,然后将其分配给 recentData.type
。
您需要先用相关对象初始化 属性,然后才能在其上写入值。我建议在一个单独的变量中这样做,如下所示,这样你就可以避免写一个可选值 (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 的语法突出显示也依赖于该约定。
所以我正在尝试设置并预填充一个数据库,以备实际应用程序发布时使用。
我遇到的问题是我无法插入到正在创建关系的字段中,该字段是空的。截图如下:
保存信息类型的数据模型是另一个对象的键
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)
})
}
会不会recentData.type?.typeOfNews = "fdfdfd"
不做手术?默认情况下它将是 None "value"。
您需要创建 sourceType
的实例,设置 属性,然后将其分配给 recentData.type
。
您需要先用相关对象初始化 属性,然后才能在其上写入值。我建议在一个单独的变量中这样做,如下所示,这样你就可以避免写一个可选值 (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 的语法突出显示也依赖于该约定。