簡體   English   中英

無法在 iOS 的 Realm 數據庫中存儲 Double 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM