无法获取领域以保存我的数据IOS Swift

问题描述 投票:0回答:2

我不确定这里发生了什么。我正在尝试将测试数据保存到数据库中,它不会保存。它将我的Realm Class中的数据保存为我设置的默认值,但它不会保存我正在尝试保存的任何数据,它们显示为空。这是奇怪的东西。

这是我的保存代码:

let medHub: MedInfo!
    medHub = MedInfo()




    if let txtMedName = txtMedName.text {
        medHub.medName = txtMedName
    }

    if let txtMedDose = txtMedDose.text {
        medHub.medDose = txtMedDose
    }

    if let txtDoctorsName = txtDoctorsName.text {
        medHub.doctorName = txtDoctorsName
    }

    if let txtRxDate = txtRxDate.text {
        medHub.rxDate = txtRxDate
    }

    if let imageViewDisplay = imageViewDisplay.image {
        if let nsDataImage = imageViewDisplay.jpegData(compressionQuality: 0.1) as NSData? {
            medHub.imageNSDATA = nsDataImage


        }
        // Save Data To Realm
        //MARK: Save Data

        let medHub = MedInfo()
        let realm = try? Realm()
        try? realm?.write {
            realm?.add(medHub)
        }
        print("Data Was Saved To Realm Database.")

}

这是我的Realm Class

class MedInfo: Object {


//  Info To Be Stored
@objc dynamic var keyID = UUID().uuidString
@objc dynamic var medName: String = ""
@objc dynamic var medDose: String = ""
@objc dynamic var currentDate: Date = Date()
@objc dynamic var timeTook: Date = Date()
@objc dynamic var lastTook: Date = Date()
@objc dynamic var durationOfTime: Date = Date()
@objc dynamic var doctorName: String = ""
@objc dynamic var rxDate: String = ""
@objc dynamic var medInfo: String = ""
@objc dynamic var linkPicture: String = ""
@objc dynamic var imageNSDATA: NSData?
@objc dynamic var isGood: Bool = false
@objc dynamic var extraDate: Date = Date()
@objc dynamic var extraString: String = ""
@objc dynamic var extraBool: Bool = false



 override static func primaryKey() -> String? {
    return "keyID"
}


}

在我填写所有文本字段后,我调用该函数来保存数据。然后我打开我的真实数据库并观察它作为数据保存它保存我的Realm类MedInfo中的所有默认动态变量但它不记录我的文本字段中的任何数据。我提供了数据库的屏幕截图。还有我的视图的屏幕截图我输入要保存的TextFileds。

Screen-Shot Of Realm Database

这是我填写的视图的屏幕截图,它没有保存我放在Textfields中的任何内容。 Screen Shot Of My View

对我做错的任何帮助都会很酷。我是新手,所以我只是在这里学习。正如您在数据库屏幕截图中看到的那样,我尝试将数据保存为三次无运气。

ios swift realm
2个回答
0
投票

因为你保存了空对象

let medHub = MedInfo()
let realm = try? Realm()
try? realm?.write {
   realm?.add(medHub)
}

让medHub = MedInfo()创建一个具有空值/默认值的新对象


0
投票

你正在从MedInfo创建两个实例,第一个是你从textfelid填充它的实例,你创建它的第二个实例是在它保存到领域之前它是默认值,因为你遇到了这个问题,首先你应该填写你的例如,如何在代码中显示我们,然后将您的实例作为外围发送以保存方法而不创建新实例:

    let medHub: MedInfo!
    medHub = MedInfo()

    if let txtMedName = txtMedName.text {
        medHub.medName = txtMedName
    }

    if let txtMedDose = txtMedDose.text {
        medHub.medDose = txtMedDose
    }

    if let txtDoctorsName = txtDoctorsName.text {
        medHub.doctorName = txtDoctorsName
    }

    if let txtRxDate = txtRxDate.text {
        medHub.rxDate = txtRxDate
    }

    if let imageViewDisplay = imageViewDisplay.image {
        if let nsDataImage = imageViewDisplay.jpegData(compressionQuality: 0.1) as NSData? {
            medHub.imageNSDATA = nsDataImage
           }
    }

saveRealmObject(medHub)

以下是可用于保存对象的保存方法

    // Save Data To Realm
    //MARK: Save Data
    func saveRealmObject(medHub:MedInfo) {
        let realm = try? Realm()
        try? realm?.write {
            realm?.add(medHub)
        }
        print("Data Was Saved To Realm Database.")
}
© www.soinside.com 2019 - 2024. All rights reserved.