[英]Cannot store a Double value in Realm database in iOS
我只是想了解 Realm 并遇到了一个问题。 我有一个这样的模型
class Template: Object {
dynamic var id = NSUUID().UUIDString
var pages = List<TemplatePage>()
}
class TemplatePage : Object {
var xPosition: Double = 0.0
var yPosition: Double = 0.0
}
现在,我正在执行以下代码:
class ViewController: UIViewController {
let realm = try! Realm()
var templatePages = [TemplatePage]()
override func viewDidLoad() {
super.viewDidLoad()
addTemplatePage(1.0, yPosition: 2.0)
//add more template pages
//[...]
//when all pages have been added create a template out of it.
addTemplate()
getXCoordinateOfFirstTemplatePage()
}
//Execute this method several times depending on the user interation
//here we only execute it once
func addTemplatePage(xPosition: Double, yPosition: Double) {
do {
let templatePage = TemplatePage()
templatePage.xPosition = xPosition
templatePage.yPosition = yPosition
try realm.write {
realm.add(templatePage)
}
templatePages.append(templatePage)
}
catch _ {
print("error while adding a template page")
}
}
//once all pages have been added create a template of of all recently added pages
func addTemplate() {
do {
let template = Template()
try realm.write {
template.pages.appendContentsOf(templatePages)
realm.add(template)
}
}
catch _ {
print("error while adding the template")
}
}
func getXCoordinateOfFirstTemplatePage() {
let template = realm.objects(Template)[0]
print(template.pages[0].xPosition)
}
}
当我运行此代码时,它会打印 0.0,即 TemplatePage xPosition 属性的默认值。 但是,我不明白为什么,因为我实际上希望它打印 1.0.0。 我不太明白为什么。 有人可以给我一个提示吗?
我遇到了类似的问题。 每当您像使用TemplatePage
一样使用嵌套类时,都会使变量动态化。
改变
var xPosition: Double = 0.0
var yPosition: Double = 0.0
到
dynamic var xPosition: Double = 0.0
dynamic var yPosition: Double = 0.0
我尝试了一些使用 Swift 4.2 的“RealmSwift”来在 Realm 中存储 Double 值。 以下效果很好。 @objc 是针对 Swift 版本的,而且 Realm 也不允许我像 Double 一样将 Double 定义为 Optional? 所以我给出了默认值。
@objc dynamic var height: Double = 0.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.