我不确定这里发生了什么。我正在尝试将测试数据保存到数据库中,它不会保存。它将我的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。
这是我填写的视图的屏幕截图,它没有保存我放在Textfields中的任何内容。
对我做错的任何帮助都会很酷。我是新手,所以我只是在这里学习。正如您在数据库屏幕截图中看到的那样,我尝试将数据保存为三次无运气。
因为你保存了空对象
let medHub = MedInfo()
let realm = try? Realm()
try? realm?.write {
realm?.add(medHub)
}
让medHub = MedInfo()创建一个具有空值/默认值的新对象
你正在从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.")
}