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

时间:2019-02-20 09:06:11

标签: ios swift realm

我不确定这是怎么回事。我正在尝试将测试数据保存到数据库中,但不会保存。它将数据保存在我设置的默认值“我的领域”中,但没有保存我要保存的任何数据,它们显示为空。这很奇怪。

这是我的保存代码:

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.")

}

这是我的领域类

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"
}


}

在填写所有文本字段后,我调用该函数来保存数据。然后,我打开我的Real Database并观看它的数据保存,它将所有默认动态var保存在我的Realm类MedInfo中,但是它不会记录我的文本字段中的任何数据。我提供了数据库的屏幕截图。另外,在“我要保存的TextFileds”中键入“视图”的屏幕截图。

Screen-Shot Of Realm Database

这是我正在填写的“我的视图”的屏幕截图,它没有保存我在“文本字段”中输入的任何内容。 Screen Shot Of My View

任何对我做错事的帮助都会很棒。我是这一切的新手,所以我只是在这里学习。如您在“数据库屏幕截图”中所见,我尝试将数据保存为“三倍不走运”。

2 个答案:

答案 0 :(得分:0)

因为您保存了空对象

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

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

答案 1 :(得分: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.")
}